Using vi to remove ^M characters in a text file


A text file that contains ^M characters was probably created on a DOS or Windows system and then opened on a Unix system. ^M is the DOS / Windows character for carriage-return, otherwise known as the end of a line in the text file.

To remove the characters, open the text file in vi. While in command mode type:

:% s/^M//g

Note: You may have to type: <ctrl-v><ctrl-m> to create the ^M character. It is not a ^ and M.

Example file with ^M characters throughout:

! Info via SNMP: sysoid=1.3.6.1.4.1.2636.1.1.1.2.25,vendor=Juniper,model=MX480,hostname=900w-mmr-wu-rt-0^M
## Last commit: 2020-06-17 05:04:35 CDT by me ^M
system {^M
    host-name 900w-mmr-wu-rt-0;^M
    time-zone America/Chicago;^M
    no-redirects;^M
    no-redirects-ipv6;^M
    dump-on-panic;^M
    internet-options {^M
        /* KB28184 tells us that the Junos default is 1000 ICMP messages per second */^M
        icmpv4-rate-limit packet-rate 1000;^M
        icmpv6-rate-limit packet-rate 1000;^M
        path-mtu-discovery;^M
        /* Routers shouldn’t process source quench messages (RFC1812) and RFC6633 formally deprecates its handing in other transport protocols. */^M
        no-source-quench;^M