我们知道在Windows下,默认文本文件的换行符为CRLF,即\r\n,人们称之为dos换行符。

这些文件在*nix(unix,Linux)系统中使用往往会报错,通常需要将dos换行符转换为*nix下能正常使用的unix换行符。

我们常常会使用dos2unix这个工具来完成转换工作,我们常常会遇到某些系统没有安装dos2unix工具,那么有没有其它工具可以实现相同效果呢?答案是有的,下面分享两个替代dos2unix的方法。

前置知识

  • dos换行符是\r\n,十六进制数值是:0D0A
  • unix换行符是\n,十六进制数值是:0A

方法一、使用sed替换法

sed -i 's/\r//g' path_to_file

sed -i 's/\x0d$//g' path_to_file

# 这两种写法都是一样的原理,都是把dos换行符\\r替换为空,即删除

方法二、cat+sed替换法

cat -vE path_to_file | sed 's/\^M\$$//g' > path_to_tmp_file
mv path_to_tmp_file path_to_file

# 这个方法是先把文件的换行符通过^M的方式显示出来,再把^M符号替换删除

方法三、vim替换法

vim path_to_file
:%s/^M//g
# 其中^M的输入方式为:先按Ctrl+V、再按Ctrl+M。这个方法只有当打开文件行尾显示^M时才有效,dos换行符和unix换行符混用的文件打开时会显示^M。

方法四、vim set ff法

vim path_to_file
:set ff=unix
:wq

# 这个是方法三的一个补充,用于纯dos文件

标签: none

添加新评论