ファイルに特定のXMLタグが表示されるたびに改行文字を挿入するにはどうすればよいですか?

ファイルに特定のXMLタグが表示されるたびに改行文字を挿入するにはどうすればよいですか?

ファイルに特定のXMLタグが表示されるたびに改行文字を挿入するにはどうすればよいですか?

</Data>私のファイルに複数のタグがあり、各タグの後に改行を挿入したいと思います。</Data>

私はさまざまな組み合わせを試しましたが、sed決して改行文字を挿入しません:(

最新sed '/<\/Data\>/ a \n'

ありがとうございます!

答え1

sed 's:</Data>:&\
:g'

$'\<char>'または、拡張エスケープシーケンスをサポートするbashまたは他のシェルから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'改行文字が挿入されているが文字列が1行に複数回存在する場合(通常の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

関連情報