转载并修改自 如何转换^M行末符号,侵删。

文章目录

  • 1. 问题描述
    • 1.1 问题描述
    • 1.2 查看
  • 2. 解决办法
    • 2.1 用VIM打开,设置编码为unix
    • 2.2 使用VIM的替换功能,替换行末的\r符号即可
    • 2.3 使用sed来进行批量处理
    • 2.4 批量处理(dos2unix,需sudo权限安装格式转换工具)
  • 3. 问题的根源

1. 问题描述

1.1 问题描述

Windows(dos)和Linux(unix)系统中,对于格式处理存在差异,比如“行末符”的表示不同,Windows下面是\r\n(CR-回车,LD-换行),而Linux则是\n(LD-换行)。
因此,如果在Windows下面编辑的脚本文件,如shell脚本文件,在Linux下面执行失败,会提示多一个^M符号,用VIM打开也会发现增加这个符号,或通过 cat -A 文件名 看到这些隐藏字符。
注意:^M使用 ctrl+V ctrl+M输入

1.2 查看

直接vim filename无法看到^M,可以搭配-b参数确认

vim -b filename

2. 解决办法

2.1 用VIM打开,设置编码为unix

:set fileformat=unix
或
: set ff=unix

然后,保存,结尾unix格式。

2.2 使用VIM的替换功能,替换行末的\r符号即可

:%s/^M//g

2.3 使用sed来进行批量处理

 sed ’s/^M//’ filename > tmp_filename

2.4 批量处理(dos2unix,需sudo权限安装格式转换工具)

sudo apt-get install dos2unix

可直接使用dos2unix filename直接转换。
但考虑到批量及递归修改,dos2unix命令并不支持递归选项,因此借用findxargs实现批量处理。

find . * | xargs dos2unix (对当前目录下面的所有文件执行转换格式的命令)
或
find -type f | xargs dos2unix

另外,dos2unix自动识别的格式转换可能并不能达到批量效果(可能是因为目录下文件格式混乱),所以保险起见,最好加上指定的转换参数,如:

find -type f | xargs dos2unix -U

附,dos2unix --help

$ dos2unix --help
usage:dos2unix [--verbose|-v] [--test|-t] [--force|-f] \[--<x>2<y>|--auto|-<Z>] \[<file name> [...]]
where:--auto, -A    output will be set based upon auto-detectionof source format--d2u, -U   perform DOS -> UNIX conversion--m2u, -T  perform MAC -> UNIX conversion--u2d, -D  perform UNIX -> DOS conversion--u2m, -M  perform UNIX -> MAC conversion--d2m, -O  perform DOS -> MAC conversion--m2d, -C   perform MAC -> DOS conversion--force     suppress internal conversion type correctionsbased on autodetected input format--skipbin, -b    skip binary files--test, -t don't write any conversion results; useful with--verbose to just report on source type--verbose, -v    print extra information on stderr--version, -V  print version information on stderr- when no options are given then input format will be automatically detectedand converted as follows:DOS -> UNIXMAC -> UNIXUNIX -> DOS
- same as above applies if --auto option is used
- when no file is given, then stdin is used as input and stdout as output
- binary files will be skipped automatically if option --skipbin(or -b) is used
- stray '\r' characters (without a following '\n') in files in DOS format arereported but only conversion 'DOS -> Unix' affects them (they are skipped)
- stray '\n' characters in files in MAC format are not detected for now

注意:
dos2unix需要root权限,我开始的时候没有用sudo运行,提示转换失败,后来利用sudo执行即可。

3. 问题的根源

在Windows下面拉取Git上面的代码,结果给版本库所有的文件都加上了行末符号,而在Linux下面再次编辑该文件就发现所有的问题都出现问题,提交的时候又不能
把所有的文件都提交成Windows的编码,因为这部分修改是没有意义的,所以需要批量转换。

文件格式批量转换(dos to unix)-自动转换^M符号相关推荐

  1. 中文 gbk gb2312 在线转换 编码码 对照表 自动转换 在线转换(推荐)

    http://bm.kdd.cc/index.chuli?zy=1&u=GBK&wz=%E9%AA%8C%E8%AF%81%E7%A0%81 中文 gbk  gb2312 在线转换 编 ...

  2. 文件格式转换DOS到UNIX:dos2unix+UltraEdit(解决no such file or directory问题)

    在windows上编辑好sh后到linux下运行时常会出现"no such file or directory",如果确实存在文件,可能是格式的问题,脚本文件是DOS格式的, 即每 ...

  3. 批量将目录下所有文件进行 dos/unix 格式转换

    一.问题产生的原因: DOS/Windows和Linux/Unix的文件换行回车格式不同,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX 文本只 ...

  4. PHP是弱类型语言,自动转换,强制转换

    强制转换: (int) - 转换成整型 (bool) - 转换.成布尔型 (float) - 转换成浮点型 (string) - 转换成字符串 (array) - 转换成数组 (object) - 转 ...

  5. vb.net 同时给多个属性赋值_Python尚学堂高淇|1721时间表示unix时间点毫秒微秒time模块浮点数自动转换强制转换增强赋值运算符...

    017浮点数-自动转换-强制转换-增强赋值运算符浮点数称为float用a*b^10形式表示的科学计数法,比如:3.14,314E-2或者314e-2这些数字在内存当中也是按照科学计数法存储. > ...

  6. python实现文件格式转换_python实现快速文件格式批量转换的方法

    用python实现文件夹下的成批文件格式转换 我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是对于计算机而言,它有时候就只接受这些肉眼看起来差不多的格式 ...

  7. python 文件批量转换格式_python实现快速文件格式批量转换的方法

    用python实现文件夹下的成批文件格式转换 我们对于文件转换的需求很大,甚至于对于图片的格式,JPG和PNG格式在肉眼看来都没什么差别,但是对于计算机而言,它有时候就只接受这些肉眼看起来差不多的格式 ...

  8. linux怎么把dos改成unix_dos2unix命令 – 将DOS格式的文本文件转换成UNIX格式

    dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter).DOS下的文本文件是以\r\n作为断行标志的 ...

  9. 代码编码格式,文件格式批量转换工具

    V1.6 增加utf8无bom格式 V1.5: 支持直接拖拽文件.目录到程序 新增多线程转换.优化多文件转换的体验 增加更多编码支持 优化编码选择界面布局 打开别的代码的时候经常会遇到编码不一致导致乱 ...

  10. Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换

    Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换 一.各操作系统下文件换行符 二.TortoiseGit下载Github代码关闭文件换行符 三.示例说明 1.开启换行符自动 ...

最新文章

  1. 高效5步走,高速搭建Hadoop2伪分布环境
  2. [html] 你知道什么是粘性布局吗?
  3. ERROR: Start Page at 'www/index.html' was not found
  4. [转载] 重新抛出异常与 public Throwable fillInStackTrace()
  5. sql server计算日期到当前日期天数_Excel必学的7个计算日期间隔差的技巧
  6. SpringBoot学习---页面国际化
  7. 深度 ghost linux系统,用Ghost实现Linux系统的备份
  8. c语言编译器官网,C语言编译器app_c语言编译器app官网下载_c语言编译器手机版app-多特软件站安卓网...
  9. 2022精选最新金融银行面试真题——附带答案
  10. 无线传感网MAC协议
  11. AutoCAD输出矢量图
  12. 【php】PHP制作QQ微信支付宝三合一收款码
  13. 李少白讲摄影-不放过一切光线地坛书市新书首发圆满结束
  14. springMVC 一些文章
  15. 记录docker镜像中证书验证失败导致更新不成功
  16. linux 查看磁盘寿命,如何确定Linux下SSD的写周期数或预期寿命?
  17. Android 设置Switch样式
  18. 大数据之Javase
  19. JavaFX游戏制作:让你的精灵动起来
  20. 黑马Vue.Js项目实战(完整)

热门文章

  1. OCS增强状态在WORD和EXCEL中的应用
  2. 机器人运动控制算法专栏介绍
  3. 技巧3 vue3项目 axios前后端交互 图片地址拼接方法
  4. APS携手纺织业走出低迷寒冬
  5. 人工智能安全的若干研究课题
  6. mysql日志 事务问题_mysql因为事务日志问题无法启动
  7. Android FrameWork Input触控事件处理流程 笔记
  8. 因为我梦见了热情的梦
  9. python实现非对称加密算法_Python使用rsa模块实现非对称加密与解密
  10. 本周最新文献速递20210418