Converting a standalone file
If you run the following command:
$ dos2unix <file>
<file> will have all the ^M characters stripped. If you want to leave
<file> intact, then simply run
dos2unix like this:
$ dos2unix -n <file> <newfile>
Parsing output from a command
If you need to do them as part of a chain of commands via a pipe, you can use any number of tools such as
perl to do this.
$ java -jar test.jar | tr -d '^M' >> test.log
$ java -jar test.jar | sed 's/^M//g' >> test.log
$ java -jar test.jar | awk 'sub(/^M/,"")' >> test.log
$ java -jar test.jar | perl -p -e 's/^M//g' >> test.log
When entering the
^M be sure to enter it in one of the following ways:
- As Control + v + M and not Shift + 6 + M.
- As a backslash r, i.e. (
- As an octal number (
- As a hexidecimal number (
Why is this necessary?
^M is part of how end of lines are terminated on the Windows platform. Each end of line is terminated with a carriage return character followed by a linefeed character.
On Unix systems the end of line is terminated by just a linefeed character.
- linefeed character =
0x0A in hex, also written as
- carriage return character =
0x0D in hex, also written as
You can see these if you pipe the output to a tool such as
hexdump. Here's a sample file with the line terminating carriage returns + linefeed characters.
$ cat sample.txt
You can see them with
$ hexdump -c sample.txt
0000000 h i t h e r e \r \n b y e t h
0000010 e r e \r \n
Or as their hexidecimal
$ hexdump -C sample.txt
00000000 68 69 20 74 68 65 72 65 0d 0a 62 79 65 20 74 68 |hi there..bye th|
00000010 65 72 65 0d 0a |ere..|
Running this through
$ sed 's/\r//g' sample.txt |hexdump -C
00000000 68 69 20 74 68 65 72 65 0a 62 79 65 20 74 68 65 |hi there.bye the|
00000010 72 65 0a |re.|
You can see that
sed has removed the
Viewing files with ^M without converting?
Yes you can use
vim to do this. You can either set the
fileformat setting in vim, which will have the effect of converting the file like we were doing above, or you can change the fileformat in the
changing a file's format
You can use the shorthand notation too:
Alternatively you can just change the fileformat of the view. This approach is nondestructive:
Here you can see me opening our
Now I'm converting the fileformat in the view:
Here's what it looks like when converted to the