转换行结束符
我一直在使用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
。