转换行结束符

我一直在使用d2u转换行结束符。 安装Puppy Linux后,我注意到它不是与d2u ,但dos2unix 。 然后我发现默认情况下Ubuntu缺失。

换行结束的另一种方法是什么?

这样做与POSIX是棘手的:

  • POSIX Sed不支持\r\15 。 即使这样做,就地选项-i不是POSIX

  • POSIX Awk支持\r\15 ,但是-i inplace选项不是POSIX

  • d2udos2unix不是POSIX实用程序 ,但ex

  • POSIX ex不支持\r\15\n\12

删除回车:

 awk 'BEGIN{RS="^$";ORS="";getline;gsub("\r","");print>ARGV[1]}' file 

要添加回车:

 awk 'BEGIN{RS="^$";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file 

一些选项:

使用tr

 tr -d '\15\32' < windows.txt > unix.txt 

要么

 tr -d '\r' < windows.txt > unix.txt 

使用perl

 perl -p -e 's/\r$//' < windows.txt > unix.txt 

使用sed

 sed 's/^M$//' windows.txt > unix.txt 

要么

 sed 's/\r$//' windows.txt > unix.txt 

要获得^M ,你必须inputCTRL-V然后CTRL-M