Linux文本文件中^M符号的处理

时间:2021-08-01 17:40:31

在linux下,有时我们用vi打开一些windows下编辑过的文本文件,我们会发现文件的每行(或某些行)结尾都会有一个^M符号(不限于此,有时其他程序生成的文件也可能有此符号),这可能是因为dos下的编辑器和linux下的编辑器对文件行末的回车符处理不一致所致,也可能是生成文本文件的程序编写有问题所致。

对于回车符的定义:
windows:0D0A
unix/linux: 0A
MAC: 0D

比较快捷的去除这些符号的方法有这么几种:

1、是用vi的命令:
    使用vi打开文本文件
    vi dos.txt
    命令模式下输入
    :set fileformat=unix
    :w

注:该方法不能保证一定有效。

2、vi下使用正则表达式替换
   g/^M/s/^M//
    或者
   %s/^M//g

3、使用sed 工具
    sed ’s/^M//’ filename > tmp_filename

4、既然window下的回车符多了‘ ’,那么当然通过删除‘ ’ ,也可以实现:
    tr -d " "

5、最后一个方法是最便捷也最有效的方法
    在终端下输入命令:
    $ dos2unix filename
    直接就可以转换成unix格式!

本文出自 “第二次启航” 博客,转载请与作者联系!