vim打開文件中每行末尾都帶有 ^M

爲何會出現^M?

1. 在windows下的文本文件的每一行結尾,都有一個回車('\n')和換行('\r')
2. 在linux下的文本文件的每一行結尾,只有一個回車('\n');
3. 而在linux下打開windows編輯過的文件,就會在行末尾顯示^M; 
4. 注:^M在vim中爲crtl+M

如何解決?

方法一

在vim命令行中輸入

:%s/\r//
%s/^M//
#注意此處^M爲crtl+M,不是字面上的^M

方法二

用dos2unix

dos2unix filename

方法三

sed

sed 's/\r//' filename -i

方法四

批量處理

find -mtime 0 -print0 |xargs -0 sed -i 's/\r//'
find -mtime 0 -print0 |xargs -0 dos2unix

命令解析

find

1. -time
        1. -atime  訪問時間(access)
        2. -mtime 修改時間(modify)
        3. time的時間單位爲day 
                1. -mtime 0   表示今天以內修改的文件
                2. -mtime -3  三天之內
                3. -mtime +3 三天之外           
    2.  find默認打印輸出爲-print(換行顯示), -print0 爲不換行輸出

xarg -0

用\0做爲分隔符,分隔字符串
執行以下

vim打開文件中每行末尾都帶有 ^M

相關文章
相關標籤/搜索