如何在文件中每次出现特定 XML 标记后插入换行符?

如何在文件中每次出现特定 XML 标记后插入换行符?

如何在文件中每次出现特定 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

相关内容