ファイルに特定の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