removing ^M from a csv file

前端 未结 3 1849
我寻月下人不归
我寻月下人不归 2021-01-05 02:06

I have a problem when I try to remove ^M from a csv

When I type vim or vi file.csv, I get

A, TK,2015-04-06,14.4^M,14.7,10.0,0.0,54.0^M,13.3^M,135.0^M         


        
相关标签:
3条回答
  • 2021-01-05 02:20

    Where did you get that file from? It looks like an old System X file from a Mac. The old pre-OSX OS used <CR> as line endings. Unix uses <LF>, and Windows/DOS uses <CRLF>.

    Do you have dos2unix. This program can convert line endings from Unix/Linux, DOS/Windows, or System X Macs to any of the formats you want. In your file, I take it you need to convert the ^M which are Control Ms and not a Caret-M to NL characters.

    0 讨论(0)
  • 2021-01-05 02:29

    You can try:

    perl -pE 's/(\^M|\r)//g' < file >file2
    

    should remove

    • the literal ^M - sequence of two characters ^ and M
    • and the ^M as \r character.
    0 讨论(0)
  • 2021-01-05 02:32

    You could use dos2unix command which is provided to do that.

    Using GNU/sed just for fun :

    sed -i -e "s/\r//g" file
    

    Using tr :

    tr -d '\r' <file1 >file2
    
    0 讨论(0)
提交回复
热议问题