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:

 

 

 

  1. Type the following sed command to delete a carriage Return (CR)
  2. sed 's/\r//' input > output
  3. Type the following sed command to replace a linefeed(LF)
  4. 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:

Fig.01: cat and sed command in action to delete carriage returns and linefeeds (CRLF)
Fig.01: cat and sed command in action to delete carriage returns and linefeeds (CRLF)

 

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

0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
ZPOOL: Detach a submirror from a mirrored zpool
Viewed 3284 times since Sun, Jun 3, 2018
Install Security Patches or Updates Automatically on CentOS and RHEL
Viewed 2367 times since Fri, Oct 26, 2018
YUM How to use yum command on CentOS/RHEL
Viewed 7909 times since Thu, Oct 25, 2018
List of 10 Must Know Oracle Database Parameters for Database Administrator
Viewed 133317 times since Thu, Jun 21, 2018
SSH ProxyCommand example: Going through one host to reach another server
Viewed 14531 times since Tue, Aug 6, 2019
Linux 20 Netstat Commands for Linux Network Management
Viewed 10230 times since Mon, Sep 21, 2020
stunnel How To Encrypt Traffic to Redis with Stunnel on Ubuntu 16.04
Viewed 2757 times since Sun, Dec 6, 2020
LVM: Reduce root PV/VG
Viewed 5810 times since Sat, Jun 2, 2018
Linux 16 Useful Bandwidth Monitoring Tools to Analyze Network Usage in Linux
Viewed 17020 times since Mon, Sep 21, 2020
10 Linux nslookup Command Examples for DNS Lookup
Viewed 10844 times since Sun, Sep 30, 2018