我有很多以 classic 结尾的文件,这^M
是我 Windows 时代的产物。由于这都是源代码,git 实际上认为这些文件已更改,所以我想一劳永逸地删除那些讨厌的行。
这是我创建的:
sed -i 's/^M//g' file
但这不起作用。当然,我没有输入文字^M
,而是^V^M
(ctrl V,ctrl M)。在 vim 中它可以工作 ( :%s/s/^M//g
) 如果我像这样修改它:
sed -i 's/^M/a/g' file
它也有效,即它以'a' 结束每一行。它也可以做到这一点:
sed -i 's/random_string//g' file
random_string
存在于哪里file
。所以我可以用^M
任何字符替换,我可以删除行但我不能删除^M
. 为什么?
注意:重要的是它只是被删除,而不是被另一个不可见的字符或其他东西替换。我还想避免双重执行并添加任意字符串并在之后将其删除。我想了解为什么会失败(但它不报告错误)。