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作为分隔符,分隔字符串
执行如下

原文地址:http://blog.51cto.com/12059878/2068615

时间: 2024-07-29 21:23:01

vim打开文件中每行末尾都带有 ^M的相关文章

vim打开文件时显示行号

vim打开文件是,默认不提示行号. 至于显示行号的用途,因人而异 linux下一个主机可能有N个账户.对于配置分为两种:仅配置当前账户,配置所有账户 vim配置文件路径(Centos  5.5 final ):   /etc/vimrc 若当前账户目录下无vim配置文件,可以cp   /etc/vimrc至相应目录.cp后,使用chmod  改变文件的用户组和用户,并mv  vimrc  .vimrc,将文件设为隐藏文件 一.更改所有账户配置 直接更改/etc/vimrc vim   /etc/

Windows下Git Bash中VIM打开文件中文乱码

Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 [email protected] MINGW64 /d/项目GGE/Hard_for_GGE (master)$ cd /etc/ [email protected] MINGW64 /etc$ vi vimrc 步骤二 在打开的vimrc文件开头添加以下代码: set nu set fencs=utf-8,gbk,utf-16,utf-32,ucs-bom 保存并退出vimrc编辑文档. 步骤三 1.退出git

linux下使用vim替换文件中的^M换行符

在linux下打开windows编辑过的文本,会出现由于换行符不一致而导致的内容格式错乱的问题.最常见的就是出现^M . 我出现的问题是:在windows编辑过的文件,传到linux上后再用vim打开,内容没有换行.也就是所有文件内容都在一行.然后再实际换行的位置多了个^M. 下面的方法是网上搜的.其中dos2unix还有一个相对应的unix2dos 1.使用dos2unix命令.一般的分发版本中都带有这个小工具(如果没有可以根据下面的连接去下载),使用起来很方便: $ dos2unix myf

vs报错“以下文件中的行尾不一致,是否将行尾标准化”

vs报错“以下文件中的行尾不一致,是否将行尾标准化” 分析: 通过读取源文件,发现换行都使用的是“\n”   Windows和Unix不同的标准引起的...即“回车”和“换行”的问题... 符号  ASCII码 意义 \n 10 换行NL \r 13 回车CR 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符.要是在这0.2秒里面,又有新的字符传过来,那么

Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?

Tools下的mdscongiguer     文件中 43行  oracle 配置      发现需要连接库 -lclntsh      libclntsh.so 库是个什么东西呢? 分想一个知乎网站上的帖子: -----------------------------------------------------------------------------------------------------------------------------------------------

python之从文件中按行读取数据

#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' # 从文件中按行读取数据 file = open("D:\坚果云\我的坚果云\\2019年计划.txt") while 1: lines = file.readlines(100000) if not lines: break for line in lines: print(line) 原文地址:https://www.cnblogs.c

vi编辑器中发现文件中每行都有一个^M字符

|--前言 从window拷贝了一个文件到linux用vim打开发现每行都有一个^M字符 ^M字符的来历和作用: 在DOS/Windows里,文本文件的换行符为\r\n,而在linux系统里则为\n, 所以DOS/Windows里编辑过的文本文件到了linux里,每一行都多了个^M. 所以^M只是一个换行符号,没有实际的用处, 如何删除^M呢? 在命令行模式下 输入 %s/\r//g 原文地址:https://www.cnblogs.com/xuzhaoping/p/11073987.html

vi/vim打开文件提示Found a swap file by the name

问题分析 有一次在远程连接主机时,用vi打开文件my.ini却提示:Found a swap file by the name ".my.ini.swp".百度了下才知道,原来在使用vi或vim命令打开一个文件后,就会产生一个.(filename).swp的文件.如果编辑完成之后,正常退出,那么这个swp文件就会被自动删除. 而之前我在使用vi操作该文件时发生了异常中断(非正常退出),于是就在当前目录下生成了一个.my.ini.swp文件.在Linux中,以.开头的文件都是隐藏文件,可

awk: 随机替换(使用文件中的行随机替换另一文件中的列)

#!/bin/awk -f #Function:指定使用文件中随机数量的行(手动传参ipl和idl)随机替换指定列(脚本中指定):使用指定位数的随机浮点替换指定列(脚本中指定). #Usage:./t.awk -v ip=<ip file> -v id=<id file> -v ipl=<n> -v idl=<n> log.txt #Date: 20140922 20:16 BEGIN {     srand()     #读取预用的ip列表     whi