(For making the examples below clearer and less ambiguous, I'll use the od
util extensively.)
It is not possible to do with a flag, for example. I bet the best solution is the one cited by the previous answers: using tr
. If you have a file such as the one below:
$ od -xc slashr.txt
0000000 6261 0d63 6564 0d66
a b c \r d e f \r
0000010
There are various ways of using tr
; the one we wanted is to pass two parameters for it - two different chars - and tr
will replace the first parameter by the second one. Sending the file content as input for tr '\r' '\n'
, we got the following result:
$ tr '\r' '\n' < slashr.txt | od -xc
0000000 6261 0a63 6564 0a66
a b c \n d e f \n
0000010
Great! Now we can use sed
:
$ tr '\r' '\n' < slashr.txt | sed 's/^./#/'
#bc
#ef
$ tr '\r' '\n' < slashr.txt | sed 's/^./#/' | od -xc
0000000 6223 0a63 6523 0a66
# b c \n # e f \n
0000010
But I presume you need to use \r
as the line delimiter, right? In this case, just use tr '\n' '\r'
to reverse the conversion:
$ tr '\r' '\n' < slashr.txt | sed 's/^./#/' | tr '\n' '\r' | od -xc
0000000 6223 0d63 6523 0d66
# b c \r # e f \r
0000010