我一直在使用d2u
转换行尾。安装 Puppy Linux 后,我注意到它没有附带d2u
,但是dos2unix
。然后我注意到 Ubuntu 默认情况下两者都缺失。
转换行尾的另一种方法是什么?
我一直在使用d2u
转换行尾。安装 Puppy Linux 后,我注意到它没有附带d2u
,但是dos2unix
。然后我注意到 Ubuntu 默认情况下两者都缺失。
转换行尾的另一种方法是什么?
一些选项:
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
。
使用 POSIX 执行此操作很棘手:
POSIX Sed不支持\r
或\15
。即使是这样,就地选项-i
也不是 POSIX
POSIX Awk确实支持\r
and \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