I have been using d2u to convert line endings. After installing Puppy Linux I noticed that it does not come with d2u, but dos2unix. Then I noticed that Ubuntu is missing both by default.
What is another way to convert line endings?
I have been using d2u to convert line endings. After installing Puppy Linux I noticed that it does not come with d2u, but dos2unix. Then I noticed that Ubuntu is missing both by default.
What is another way to convert line endings?
Some options:
trtr -d '\15\32' < windows.txt > unix.txt
OR
tr -d '\r' < windows.txt > unix.txt
perlperl -p -e 's/\r$//' < windows.txt > unix.txt
sedsed 's/^M$//' windows.txt > unix.txt
OR
sed 's/\r$//' windows.txt > unix.txt
To obtain ^M, you have to type CTRL-V and then CTRL-M.
Doing this with POSIX is tricky:
POSIX Sed does not support \r or \15. Even if it did, the in place
option -i is not POSIX
POSIX Awk does support \r and \15, however the -i inplace option
is not POSIX
d2u and dos2unix are not POSIX utilities, but ex is
POSIX ex does not support \r, \15, \n or \12
To remove carriage returns:
awk 'BEGIN{RS="^$";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
To add carriage returns:
awk 'BEGIN{RS="^$";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file