vim打开文本文件末尾显示^M的解决办法

解决办法

1. 安装dos2unix工具
]# yum install dos2unix -y

2. 转换文本文件
]# dos2unix file.txt
dos2unix: converting file job.sh to UNIX format ... #转换成功

问题原因

  • 文件是经Windows编辑导致
  • DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致
  • ftp上传时也可能导致此情况发生

扩展

dos2unix使用方法

dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
     -k:保持输出文件的日期不变 
     -q:安静模式,不提示任何警告信息
     -V:查看版本
     -c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII
     -o:写入到源文件
     -n:写入到新文件
常用示例:
1. 一次转换多个文件
]# dos2unix file1.txt file2.txt file3.txt
2. 保留源文件,转换后的文件作为新文件
]# dos2unix -n file.txt file_new.txt

unix2doc使用方法

unix2dos [options] [file ...] [-n infile outfile ...]
顾名思义将unix格式转换为dos格式,使用方法与dos2unix类似
常用示例:
]# unix2doc file.txt

注意:如果是Windows编辑的文件中有多个空行,不能使用grep过滤空行(grep -Ev "^$" file.txt);需要先dos2unix转换后,方可以使用过滤空行的命令

原文地址:https://www.cnblogs.com/wanwz/p/12804138.html