如何在文件中每次出现特定 XML 标记后插入换行符?
我的文件有多个标签,我想在每个标签</Data>
后插入换行符</Data>
我一直在尝试各种组合,sed
但它从未插入换行符:(
最新的是sed '/<\/Data\>/ a \n'
谢谢!
答案1
sed 's:</Data>:&\
:g'
或者从 bash 或其他支持$'\<char>'
扩展转义序列的 shell 调用 sed 时:
sed 's:</Data>:&\'$'\n'':g'
或者使用 GNU sed
:
sed 's:</Data>:&\n:g'
例如:
$ printf 'foo</Data>bar</Data>etc\n'
foo</Data>bar</Data>etc
$
$ printf 'foo</Data>bar</Data>etc\n' | sed 's:</Data>:&\n:g'
foo</Data>
bar</Data>
etc
答案2
这可能不是最优雅的,但它有效:
sed 's/\(<\/Data>\)/\1\n/ig'
答案3
sed '/<\/Data>/ a \\n'
将插入换行符,但是,如果该字符串在一行中存在多次(典型的 xml 可能是一长行),它只是在其后添加一个换行符,而不是在每次出现后附加一个换行符。
如果你真的想在每次出现后换行,sed 's/\(<\/Data>\)/\1\n/g'
应该这样做。
答案4
在 python 中尝试过
cat inputfile
san</Data>abhi</Data>san
Python
#!/usr/bin/python
g="</Data>"
import re
k=open('k.txt','r')
for i in k:
m="{0}".format(g+"\n")
q=re.sub(g,"{0}",i).format(m)
print q
输出
san</Data>
abhi</Data>
san