Loading

Vim编辑windows格式文件出现的[noeol][dos]的含义、解决方法及方法解释

文章目录

前言

最近想要将保存再windows的文件传到linux上,传进去保存文件之后,用vim打开发现在文件的底下出现了[dos] [noeol]这两个标志。然后就很疑问这是什么以及应该怎么解决

其实这两个问题产生的原因都是因为windows和linux对于文件的不同格式而引发的问题。
这是我在windows下的文件:
在这里插入图片描述
等我传到linux后,用cat -A ceshi.txt,查看到的就是如下
在这里插入图片描述
会有一个[noeol] [dos]的标志。

[dos]

这个标志的产生原因是因为在windows下,文件的换行符是\r\n,而在linux下换行符是\n,所以,使用cat -A ceshi.txt会发现,多了一个^M,而正常linux文件的就只有一个$,所以说,我们要想办法把这个^M去掉就可以消除[dos]标志了。

解决的方法:

  1. dos2unix ceshi.txt
    如果没有dos2unix,首先得安装dos2unix
    输入sudo apt-get install dos2unix,这个一般都安装了

  2. sed -i 's/^M//g' ceshi.txt
    这里的^M是用ctrl + V,然后ctrl + M打出来的
    sed -i的意思是直接在文件里编辑,s是代表替换,/^M//这里代表将^M替换成空,g是代表替换所有列
    所以这个命令的含义就是将ceshi.txt文件里的所有的^M都替换成空

  3. 使用vim
    首先vim ceshi.txt,然后:1, $s/^M//g
    这里得含义和第2种方法是一样的,但是不同点在于1, $这里,是指定处理从第一行到最后一行,$代表最后一行
    同样这里的^M是用ctrl + V,然后ctrl + M打出来的

  4. cat ceshi.txt |tr -d '\r' > ceshi.txt
    tr -d是删除指定的字符,\r是可以代表^M

[noeol]

这里的这个noeol也就是no end-of-line的意思,就是结尾没有一个换行符,这也是因为windows的文件的问题,因为其末尾是没有换行的

解决方法:

  1. 使用vim
    当你的文件有这种[noeol]的标志时,可以vim打开文件,然后输入:wq保存,就可以把[noeol]消除掉。

  2. sed -i -e '$a\'
    a的意思是追加,就是在末尾追加一个换行。

posted @ 2022-09-03 19:46  师从名剑山  阅读(558)  评论(0编辑  收藏  举报