如何从不存在 dos2unix、perl、tr 和 sed 的文件中删除 Ctrl-M?

Hem*_*ant 9 command-line software-rec

假设你正在一个很旧的Unix服务器上,其中dos2unixperltr,和sed不存在。如何将文件从dos转换为unix格式?

jjc*_*son 12

我认为您指的是删除行尾的插入符号-M。您可以在 vi 中使用搜索和替换来执行此操作。

在 vi 中,我通常这样做:(其中“^”代表 CTRL):

:%s/^V^M//g
Run Code Online (Sandbox Code Playgroud)

在屏幕上显示为:

:%s/^M//g
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用 sed 做同样的事情,而不必 vim 文件: sed -e '%s/^V^M//g' filename 这也将在屏幕上显示为 sed e '%s/^ M//g' 文件名 一般来说,如果你可以在 vim 中搜索/替换它,命令在 sed 中几乎相同。 (4认同)
  • @gabe:sed 解决方案实际上更便携+1 :) (2认同)

Gil*_*il' 6

没有trsed必须非常旧的服务器,或者缺少一些基本命令。希望ed就在那里;它存在于Unix 第一版中

ed /path/to/file
1,$s/^V^M$//
w
q
Run Code Online (Sandbox Code Playgroud)

where^V^M表示输入Ctrl+V然后Ctrl+ M(输入文字换行)。如果您知道所有行都以 CR LF 结尾,则可以1,$s/.$//改用(不加选择地删除每行的最后一个字符)。