从文本文件中删除^M

9
我有一个文本文件,在Mac终端上使用less命令打开时会显示^M字符。 我尝试使用以下命令来删除^M字符。
awk '{ gsub("\n", "\r"); print $0;}' input > output
cat input | tr ‘\n’ ‘\r’ > output

但是它们都没有起作用。有人能否使用一些Linux命令来修复它呢?

无法在Mac上安装。 - chas
2
下面的答案告诉你如何按照你的要求删除^M,但是如果你实际上只想删除DOS行结尾处出现的^M,那么它们是错误的,因为它们会删除第一个^M或所有的^M,而不仅仅是出现在行末的一个。要正确处理这些,请参见https://dev59.com/11cO5IYBdhLWcg3weBWZ。 - Ed Morton
3个回答

6
你可以使用 `sed` 命令:
 sed 's/^M//' filename > newfilename

如果你想使用 awk,那么请执行以下操作:
awk '{sub(/^M/,"")}1' filename > newfilename

要输入^M,请先按下CTRL-V,然后依次按下CTRL-M。也就是说,按住CTRL键,然后连续按下VM键。 更新 根据评论中@glenn jackman的建议,可以使用\r来得到^M

1
使用"\r"代替"ctrl-v ctrl-m"。 - glenn jackman

2
col < input > output

或者:

vim "+set ff=unix" "+saveas output" "+q" input

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接