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

Add a second substitution that replaces the end of the line with a newline: s/$/\n/. Since you have two patterns now, you need to use -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 回答