使用 sed 如何追加 N 行

使用 sed 如何追加 N 行

我有以下 csv 文件:

hostname1,this is a test,001^M
hostname2,this is
a test,002^M
hostname3,this
is
a
test,003^M

第一行是该行的正确格式。我希望其他行遵循相同的格式。问题在于第二列,其中一些有回车符,因此第三列位于新行上,但我想使用 sed 来连接所有行,无论它们分开了多少行。

答案1

假设^M序列代表 CR 字符,即

$ cat -et file.csv
hostname1,this is a test,001^M$
hostname2,this is$
a test,002^M$
hostname3,this$
is$
a$
test,003^M$

那么如果行不以 CR 结尾,您可以使用以下命令将行连接到下一行:

sed -e :a -e '/\r$/!N; s/\n//; ta' file.csv

前任。

$ sed -e :a -e '/\r$/!N; s/\n//; ta' file.csv | cat -et
hostname1,this is a test,001^M$
hostname2,this isa test,002^M$
hostname3,thisisatest,003^M$

相关内容