我一直在使用d2u
转换行结尾。安装Puppy Linux后我
注意到它不是d2u
,而是dos2unix
。然后我注意到了
默认情况下,Ubuntu都缺少。
转换行结尾的另一种方法是什么?
答案 0 :(得分:87)
一些选项:
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
,您必须输入CTRL-V
,然后输入CTRL-M
。
答案 1 :(得分:65)
使用POSIX执行此操作非常棘手:
POSIX Sed不支持\r
或\15
。即使它确实如此,到位
选项-i
不是POSIX
POSIX Awk支持\r
和\15
,但是-i inplace
选项
不是POSIX
d2u 和 dos2unix 不是POSIX utilities,但 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