Blog dedicated to Oracle Applications (E-Business Suite) Technology; covers Apps Architecture, Administration and third party bolt-ons to Apps

Tuesday, March 31, 2009

^M character

Vinu asked me about ^M character in his scripts. ^M denotes carriage return. 

You can verify this by pressing the keys Ctrl and M together on your windows command prompt or unix prompt.

I told him that it is a well known issue. Whenever an ASCII file is transferred in binary mode to unix, ^M character is appended after every line. To convert it to correct unix format, you can use the dos2unix utility and the following command:

dos2unix original.file withoutM.file

In a loop (originally referenced here) you can fix all files:

$ for files in `find . -print`;
> do
> mv $files $files.old
> dos2unix -437 $files.old $files
> rm -rf $files.old
> done

Some of the other characters from Ctrl+A to Ctrl+Z:

Oct Dec Hex Name
000 0 0x00 NUL
001 1 0x01 SOH, Control-A
002 2 0x02 STX, Control-B
003 3 0x03 ETX, Control-C
004 4 0x04 EOT, Control-D
005 5 0x05 ENQ, Control-E
006 6 0x06 ACK, Control-F
007 7 0x07 BEL, Control-G
010 8 0x08 BS, backspace, Control-H
011 9 0x09 HT, tab, Control-I
012 10 0x0a LF, line feed, newline, Control-J
013 11 0x0b VT, Control-K
014 12 0x0c FF, form feed, NP, Control-L
015 13 0x0d CR, carriage return, Control-M
016 14 0x0e SO, Control-N
017 15 0x0f SI, Control-O
020 16 0x10 DLE, Control-P
021 17 0x11 DC1, XON, Control-Q
022 18 0x12 DC2, Control-R
023 19 0x13 DC3, XOFF, Control-S
024 20 0x14 DC4, Control-T
025 21 0x15 NAK, Control-U
026 22 0x16 SYN, Control-V
027 23 0x17 ETB, Control-W
030 24 0x18 CAN, Control-X
031 25 0x19 EM, Control-Y
032 26 0x1a SUB, Control-Z


PaoloM said...

Hello Vikram,
actually the Carriage Return character (^M or 0x0D) is specific of Windows OS, not Unix. You are going to see it when you create a file in Windows and transfer it to unix in binary mode.

Please have a look here for some background information:

Vikram Das said...

Hi Paolo,

Thank you for the correction and the wikipedia link for newline. I have removed Unix from the post. If I do Ctrl+M from windows command prompt or Unix command prompt, the result is same.

- Vikram

Pravin Takpire said...

You can use vi editor to remove the Carriage Return Character
But again works on single files.

^VM -- control+V+M


Vikram Das said...

Yes Pravin. The idea here was to fix all the files in one shot.