sed -e's/^ M/d'不工作

dig*_*123 4 unix linux sed

一个非常常见的问题,但我无法用sed解决它.

我有一个脚本文件(一批命令)说myfile.txt要立即执行以创建列表.现在,当我执行批处理操作时,我的命令行界面清楚地显示它无法解析命令,因为换行符^M在每行末尾加起来.

我认为sed这是最好的方式.我试过:

    sed -e 's/^M/d' myfile.txt > myfile1.txt
    mv myfile1.txt myfile.txt
Run Code Online (Sandbox Code Playgroud)

它没用.我也尝试过这个并没有用:

    sed -e 's/^M//g' myfile.txt > myfile1.txt
    mv myfile1.txt myfile.txt
Run Code Online (Sandbox Code Playgroud)

然后我想可能sed是在行的开头将它作为M字符,因此没有结果.所以我尝试过:

    sed -e 's/\^M//g' myfile.txt > myfile1.txt
    mv myfile1.txt myfile.txt
Run Code Online (Sandbox Code Playgroud)

但没有变化.我正在做一个基本的错误吗?请告诉我,我很擅长sed.

我找到了一个解决方案,但是在vi编辑器中打开文件并在命令模式下执行:

    :set fileformat=unix
    :w
Run Code Online (Sandbox Code Playgroud)

但我也想要它sed.

Sac*_*acx 11

^M不是字面上的^M.替换^M\r.您可以使用相同的表示tr; 这两个命令都删除回车:

tr -d '\r'  < input.txt > output.txt
sed -e 's/\r//g' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)