我一直在使用d2u转换行尾。安装 Puppy Linux 后,我注意到它没有附带d2u,但是dos2unix。然后我注意到 Ubuntu 默认情况下两者都缺失。
转换行尾的另一种方法是什么?
我一直在使用d2u转换行尾。安装 Puppy Linux 后,我注意到它没有附带d2u,但是dos2unix。然后我注意到 Ubuntu 默认情况下两者都缺失。
转换行尾的另一种方法是什么?
一些选项:
trtr -d '\15\32' < windows.txt > unix.txt
或者
tr -d '\r' < windows.txt > unix.txt
perlperl -p -e 's/\r$//' < windows.txt > unix.txt
sedsed '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确实支持\rand \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