是否有一个 Bash 命令可以将 \r\n 转换为 \n?
当我将脚本从 Windows 上传到 Linux 时,我需要这样的实用程序来使其正常运行。
答案1
有:
dos2unix
答案2
翻译 (tr) 在所有 Unix 上可用:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
答案3
有一个名为 的 Unix 实用程序conv
可以转换行尾。它通常通过软链接调用u2d
或d2u
或unix2dos
或dos2unix
。
此外,还有称为fromdos
和 的实用程序todos
。
答案4
使用 POSIX 执行此操作比较棘手:
POSIX Sed不支持
\r
或\15
。即使支持,就地选项-i
也不是 POSIXPOSIX awk支持
\r
和\15
,但-i inplace
选项不是 POSIXd2u和dos2unix不是POSIX 实用程序, 但前任是
POSIX 扩展不支持
\r
、\15
或\n
\12
删除回车符:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
要添加回车符:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file