sed Delete / Remove ^M Carriage Return (Line Feed / CRLF) on Linux or Unix
How can I remove the ^M or ^M (carriage Return / line feed ) from text file using sed under UNIX or Linux operating systems?
A newline is nothing but end of line (EOL). It is a special character or sequence of characters signifying the end of a line of text and the start of a new line. The actual codes representing a newline vary across operating systems. For example CR+LF is used by Microsoft Windows, DOS (MS-DOS, PC DOS, etc.). LF is used by Unix and Unix-like systems including Linux, OS X, FreeBSD and more. The procedure is as follows:
- Type the following sed command to delete a carriage Return (CR)
- sed 's/\r//' input > output
- Type the following sed command to replace a linefeed(LF)
- sed ':a;N;$!ba;s/\n//g' input > output
Delete a carriage return (CR) with sed command
The substitute command syntax is as follows (to get ^M type CTRL+V followed by CTRL+M i.e. don’t just type the carat symbol and a capital M. It will not work):
sed -e 's/^M//g' input sed -e 's/^M//g' input > output # gnu sed syntax sed -i 's/^M//g' input # replace it with FOO sed -i -e 's/^M/FOO/g' input |
OR easy to use sed syntax to remove carriage return in Unix or Linux:
sed 's/\r$//' input > output sed 's/\r$//g' input > output # GNU/sed syntax sed -i 's/\r$//g' input |
To replace a carriage return (CR) with sed command
The syntax is:
sed 's/\r/YOUR-replacement-TEXT-HERE/' input > output
sed 's/\r/YOUR-replacement-TEXT-HERE/g' input > output
sed 's/\r/foo/g' input > output
How to verify ^M in a text file
Use the cat command as follows:
cat -v input
Sample outputs:
A note about deleting or replacing a linefeed (LF) with sed on Unix or Linux
Use the following syntax if you do not want to delete \n (new line):
sed -i ':a;N;$!ba;s/\n//g' input
OR
sed ':a;N;$!ba;s/\n//g' input > output
See sed command man page for more info.
Remove a carriage return with dos2unix command
You can also use dos2unix command to converts text files from the DOS format to the Unix format:
dos2unix input
dos2unix -b input
|
The tr command syntax
To delete a CRLF:
tr -d '\r' < input > output