views:

4665

answers:

6

What is the simplest way to remove all the carriage returns /r from a file in Unix?

+13  A: 

There's a utility called dos2unix that exists on many systems, and can be easily installed on most.

Emil H
Sometimes it is also called fromdos (and todos).
Anonymous
+3  A: 

sed -i s/\r// <filename> or somesuch; see man sed or the wealth of information available on the web regarding use of sed.

One thing to point out is the precise meaning of "carriage return" in the above; if you truly mean the single control character "carriage return", then the pattern above is correct. If you meant, more generally, CRLF (carriage return and a line feed, which is how line feeds are implemented under Windows), then you probably want to replace \r\n instead. Bare line feeds (newline) in Linux/Unix are \n.

Rob
+13  A: 

I'm going to assume you mean carriage returns ("\r", 0x0d) at the ends of lines rather than just blindly within a file (you may have them in the middle of strings for all I know :-). Using this test file:

$ cat infile
hello
goodbye

$ cat infile | od -c
0000000   h   e   l   l   o  \r  \n   g   o   o   d   b   y   e  \n
0000017

dos2unix is the way to go if it's installed on your system:

$ cat infile | dos2unix -U | od -c
0000000   h   e   l   l   o  \n   g   o   o   d   b   y   e  \n
0000016

If for some reason dos2unix is not available to you, then sed will do it:

$ cat infile | sed 's/\r\n$/\n/' | od -c
0000000   h   e   l   l   o  \n   g   o   o   d   b   y   e  \n
0000016

If for some reason sed is not available to you, then ed will do it, in a complicated way:

$ echo ',s/\r\n/\n/
> w !cat
> Q' | ed infile 2>/dev/null | od -c
0000000   h   e   l   l   o  \n   g   o   o   d   b   y   e  \n
0000016

If you don't have any of those tools installed on your box, you've got bigger problems than trying to convert files :-)

paxdiablo
+4  A: 
tr -d '\r' < infile > outfile

See tr(1)

Henrik Gustafsson
+2  A: 

Old School:

tr -d '\r' < filewithcarriagereturns > filewithoutcarriagereturns
plinth
A: 

try this to convert dos file into unix file:

fromdos file

hawston