sed替换与python替换

时间:2012-06-06 15:48:10

标签: python sed

输出的格式是相同的,除了使用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 个答案:

答案 0 :(得分:2)

我不是sed大师,但您可以使用以下内容在sed中的每一行末尾添加换行符:

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

这是有效的,因为$匹配一行的结尾。请注意,您可以将多个sed命令与-e组合在一起(正如Michael Mrozek所指出 - 有关详情,请参阅man sed)。

答案 1 :(得分:2)

添加第二个替换,用换行符替换行尾:s/$/\n/。由于您现在有两种模式,因此需要使用-e

sed -e 's:\x01: | :g' -e 's/$/\n/'

答案 2 :(得分:1)

这可能对您有用:

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

或者,如果您只想为每一行添加换行符:

sed G file

答案 3 :(得分:0)

print添加了一个新行 试试这个

sys.stdout.write(line.replace("\01"," | "))