当前位置: 首页 > news >正文

Ubuntu22.04之去除文件结尾的^M符号(二百五十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门实战课原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.^M符号介绍
    • 🌻3.解决方案
      • 🐓3.1 显示^M符号
      • 🐓3.2 去处windows系统的:^M的符号.

🌻1.前言

本篇目的:Ubuntu22.04之去除^M符号

🌻2.^M符号介绍

  • 在Ubuntu和其他基于Unix-like系统的操作系统中,^M符号通常表示文件的行结束符是CRLF(即回车符CR和换行符LF的组合),这是Windows系统中的标准行结束符。相比之下,Unix-like系统使用LF(换行符)作为行结束符。
  • ^M符号的出现通常是因为文件在不同类型的操作系统中编辑或传输时,行结束符发生了变化。例如,当你在Windows上编辑一个文件并保存时,文本编辑器通常会添加CRLF作为行结束符。如果你将这个文件移动到Ubuntu系统上,^M符号就会出现在每行的末尾,因为Unix-like系统的文本工具预期的是LF而不是CRLF。
  • 在Ubuntu中使用meld等比较工具时,^M符号的出现通常是因为你在比较两个文件,其中一个文件使用了CRLF作为行结束符,而另一个文件使用了LF。meld会显示这些差异,^M符号就是用来表示额外的回车符CR。
  • 在Ubuntu中,^M符号也可能在以下情况下出现:
  1. 文件传输:当你从Windows系统复制文件到Ubuntu系统,或者通过邮件附件等方式发送文件时,文件的行结束符可能会被保留为CRLF。在Ubuntu系统中打开这些文件时,你可能会看到^M符号。
  2. 版本控制:在使用Git等版本控制系统时,如果配置不当,可能会在Ubuntu系统上检出包含CRLF的文件。这通常可以通过配置Git来避免,例如设置core.autocrlfinput,这样Git会在检出时转换为LF,而在提交时转换为CRLF。
  3. 文本编辑器:一些文本编辑器,如gvimsublime text,可以在Ubuntu上设置为使用Windows风格的行结束符。如果你在这样的编辑器中打开或编辑文件,可能会看到^M符号。
  4. 脚本和程序:在编写或运行脚本时,如果你在Windows上编写并在Ubuntu上运行,或者反之,行结束符的差异可能会导致脚本无法正确执行。这是因为Unix-like系统的shell预期脚本的行结束符是LF,而不是CRLF。
  • 为了处理^M符号,Ubuntu提供了一些工具,如dos2unixunix2dos,这些工具可以用来转换文件的行结束符。例如,使用dos2unix可以将CRLF转换为LF,从而删除^M符号。
  • 总的来说,^M符号在Ubuntu中出现是因为文件在不同操作系统中编辑和传输时,行结束符的标准不同。了解这一点有助于在跨平台环境中正确处理和比较文件。

🌻3.解决方案

🐓3.1 显示^M符号

# cat -A  test.txt
  • 如果是windows编码格式,可以看到每行结尾:^M的符号。

🐓3.2 去处windows系统的:^M的符号.

  • 第一种方式:
# dos2unix test.txt
  • 第二种方式:
# vim test.txt
在命令模式下:输入:%s/^M//g 然后,回车即可替换
  • 第三种方式:
sed -i 's/^M//' test.txt

相关文章:

  • 使用Kube-Bench对Kubernetes进行安全检测
  • 使用Selenium进行Web自动化:详细操作指南
  • 【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门
  • YOLOv8中文分类标签显示问题解决
  • Windows桌面运维----第四天
  • 基于Java的高校校园点餐系统
  • c中编程题最有效率的方法算出2乘以8等於几
  • SpringBootWeb 篇-入门了解 Spring Cache 、Spring Task 与 WebSocket 框架
  • FPGA早鸟课程第二弹 | Vivado 设计静态时序分析和实际约束
  • SSL证书怎样配置部署更安全?
  • 18-云原生监控体系-kube-state-metrics
  • 海南聚广众达电子商务咨询有限公司抖音电商新引擎
  • 汽车IVI中控开发入门及进阶(三十一):视频知识扫盲
  • 阿里云ECS(CentOS/Alibaba Cloud Linux)安装最新 Docker 方法
  • C++初学者指南第一步---7.控制流(基础)
  • 【node学习】协程
  • 【刷算法】求1+2+3+...+n
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Akka系列(七):Actor持久化之Akka persistence
  • Angular 4.x 动态创建组件
  • css的样式优先级
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Python3爬取英雄联盟英雄皮肤大图
  • 服务器从安装到部署全过程(二)
  • 聚簇索引和非聚簇索引
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 浏览器缓存机制分析
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​用户画像从0到100的构建思路
  • # include “ “ 和 # include < >两者的区别
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (09)Hive——CTE 公共表达式
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (SpringBoot)第二章:Spring创建和使用
  • (译)2019年前端性能优化清单 — 下篇
  • (原)本想说脏话,奈何已放下
  • (转)JAVA中的堆栈
  • (转)Unity3DUnity3D在android下调试
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET Core 发展历程和版本迭代
  • .Net语言中的StringBuilder:入门到精通
  • @html.ActionLink的几种参数格式
  • [ C++ ] STL---仿函数与priority_queue
  • []T 还是 []*T, 这是一个问题
  • [000-01-022].第03节:RabbitMQ环境搭建
  • [2]十道算法题【Java实现】
  • [20160902]rm -rf的惨案.txt
  • [CAN] 创建解析CAN报文DBC文件教程
  • [CF407E]k-d-sequence
  • [CSS]浮动
  • [Firefly-Linux] RK3568修改控制台DEBUG为普通串口UART