转换行结束符
我一直在使用d2u转换行结束符。 安装Puppy Linux后,我注意到它不是与d2u ,但dos2unix 。 然后我发现默认情况下Ubuntu缺失。
换行结束的另一种方法是什么?
这样做与POSIX是棘手的:
-
POSIX Sed不支持
\r或\15。 即使这样做,就地选项-i不是POSIX -
POSIX Awk支持
\r和\15,但是-i inplace选项不是POSIX -
d2u和dos2unix不是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 。