3

出力の形式は同じですが、Pythonを使用する場合、出力は各文字列の間に改行を追加します。sedを使用してこれを行う理由と方法はありますか?

sed 's:\x01: | :g'

01.06.2012 07:51:55.135 | 3732 | INFO | xxx | 8=FIX.4.2 | 9=157 | 35=V | 56=xxx | 49=xxx | 52=20120601-07:51:54 | 34=40 | 262=VMD1338537114945 | 263=1 | 264=0 | 265=1 | 
01.06.2012 07:51:55.135 | 3732 | INFO | xxx | 8=FIX.4.2 | 9=157 | 35=V | 56=xxx | 49=xxx | 52=20120601-07:51:54 | 34=41 | 262=VLT1338537114945 | 263=1 | 264=1 | 265=1 | 

for line in sys.stdin:
    print line.replace("\01", " | ")


01.06.2012 07:51:55.135 | 3732 | INFO | xxx | 8=FIX.4.2 | 9=157 | 35=V | 56=xxx | 49=xxx | 52=20120601-07:51:54 | 34=40 | 262=VMD1338537114945 | 263=1 | 264=0 | 265=1 | 

01.06.2012 07:51:55.135 | 3732 | INFO | xxx | 8=FIX.4.2 | 9=157 | 35=V | 56=xxx | 49=xxx | 52=20120601-07:51:54 | 34=41 | 262=VLT1338537114945 | 263=1 | 264=1 | 265=1 | 
4

4 に答える 4

2

私はsed教祖ではありませんが、次を使用してsedのすべての行の最後に改行を追加できます。

 sed -e 's/$/\n/g'

これ$は、行の終わりに一致するために機能します。sed複数のコマンドを一緒に文字列化できることに注意してください-e(Michael Mrozekが指摘しているように-詳細についてはを参照man sedしてください)。

于 2012-06-06T15:57:15.743 に答える
2

行の終わりを改行に置き換える2番目の置換を追加しますs/$/\n/。現在2つのパターンがあるため、次を使用する必要があります-e

sed -e 's:\x01: | :g' -e 's/$/\n/'
于 2012-06-06T15:57:53.280 に答える
1

これはあなたのために働くかもしれません:

sed '/\x01/{s// | /g;G}' file

または、すべての行に改行を追加するだけの場合:

sed G file
于 2012-06-06T16:24:39.060 に答える
0

印刷は改行を追加します代わりにこれを試してください

sys.stdout.write(line.replace("\01"," | "))
于 2012-06-06T15:52:02.863 に答える