如何从文本文件中删除 ^M 和后续行?

如何从文本文件中删除 ^M 和后续行?

我有以下带有 ^M (回车)的行。我想删除 ^M+ 行。您可以注意到每个 ^M 之后都有一个新行,这是不希望的。我的目的是删除控制字符并制作一行 CSV。

    '1.0';'';'';'';'Mon Jul 04 00:00:00 CEST 2016';'To cash Pls Acc 4142^M
To cash Pls Acc 4142';'To cash Pls Acc 4142^M
Money';'236159';'236159';'-2000.0';'';'2000.0'

我尝试跟随但没有成功。注:^M = 控制 v + 控制 m

cat file.csv | sed 's/[\^M\n]//g' > new_file.csv

上面的行删除了^M,但该行仍然被新行断开。

预期产出

 '1.0';'';'';'';'Mon Jul 04 00:00:00 CEST 2016';'To cash Pls Acc 4142To cash Pls Acc 4142';'To cash Pls Acc 4142 Money';'236159';'236159';'-2000.0';'';'2000.0'

答案1

这适用于您的情况:

sed -i ':a;N;$!ba;s/\r\n//g' file.csv

从:sed 可以替换新行字符吗?

或者这个:

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

从:http://www.catonmat.net/blog/sed-one-liners-explained-part-one/

请注意,您不需要使用,如果需要,cat您可以直接使用该选项编辑文件。-i

答案2

\r不是^M。最简单的方法是:

tr -d '\n-\r' < file.

-d表示删除,\n-\r是删除的字符范围tr

请注意,此代码还将删除\n前面没有“ ^M”的出现。

相关内容