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的意思是追加,就是在末尾追加一个换行。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值