服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 如何在Linux中删除文本中的回车字符

如何在Linux中删除文本中的回车字符

2022-10-20 18:24Linux中国Sandra Henry-stocker Linux

“回车”字符可以往回追溯很长一段时间 —— 早在打字机上就有一个机械装置或杠杆将承载纸滚筒的机架移到右边,以便可以重新在左侧输入字母。他们在 Windows 上的文本文件上保留了它,但从未在 Linux 系统上使用过。当你尝试

如何在Linux中删除文本中的回车字符

当回车字符(Ctrl+M)让你紧张时,别担心。有几种简单的方法消除它们。

“回车”字符可以往回追溯很长一段时间 —— 早在打字机上就有一个机械装置或杠杆将承载纸滚筒的机架移到右边,以便可以重新在左侧输入字母。他们在 Windows 上的文本文件上保留了它,但从未在 Linux 系统上使用过。当你尝试在 Linux 上处理在 Windows 上创建的文件时,这种不兼容性有时会导致问题,但这是一个非常容易解决的问题。

如果你使用 od八进制转储octal dump)命令查看文件,那么回车(也用 Ctrl+M 代表)字符将显示为八进制的 15。字符 CRLF 通常用于表示 Windows 文本文件中的一行结束的回车符和换行符序列。那些注意看八进制转储的会看到 \r\n。相比之下,Linux 文本仅以换行符结束。

这有一个 od 输出的示例,高亮显示了行中的 CRLF 字符,以及它的八进制。

 

  1. $ od -bc testfile.txt
  2. 0000000 124 150 151 163 040 151 163 040 141 040 164 145 163 164 040 146
  3. T h i s i s a t e s t f
  4. 0000020 151 154 145 040 146 162 157 155 040 127 151 156 144 157 167 163
  5. i l e f r o m W i n d o w s
  6. 0000040 056 015 012 111 164 047 163 040 144 151 146 146 145 162 145 156 <==
  7. . \r \n I t ' s d i f f e r e n <==
  8. 0000060 164 040 164 150 141 156 040 141 040 125 156 151 170 040 164 145
  9. t t h a n a U n i x t e
  10. 0000100 170 164 040 146 151 154 145 015 012 167 157 165 154 144 040 142 <==
  11. x t f i l e \r \n w o u l d b <==

虽然这些字符不是大问题,但是当你想要以某种方式解析文本,并且不希望就它们是否存在进行编码时,这有时候会产生干扰。

3 种从文本中删除回车符的方法

幸运的是,有几种方法可以轻松删除回车符。这有三个选择:

dos2unix

你可能会在安装时遇到麻烦,但 dos2unix 可能是将 Windows 文本转换为 Unix/Linux 文本的最简单方法。一个命令带上一个参数就行了。不需要第二个文件名。该文件会被直接更改。

 

  1. $ dos2unix testfile.txt
  2. dos2unix: converting file testfile.txt to Unix format...

你应该会发现文件长度减少,具体取决于它包含的行数。包含 100 行的文件可能会缩小 99 个字符,因为只有末尾一行不会以 CRLF 字符结尾。

之前:

 

  1. -rw-rw-r-- 1 shs shs 121 Sep 14 19:11 testfile.txt

之后:

 

  1. -rw-rw-r-- 1 shs shs 118 Sep 14 19:12 testfile.txt

如果你需要转换大量文件,不用每次修复一个。相反,将它们全部放在一个目录中并运行如下命令:

 

  1. $ find . -type f -exec dos2unix {} \;

在此命令中,我们使用 find 查找常规文件,然后运行 dos2unix 命令一次转换一个。命令中的 {} 将被替换为文件名。运行时,你应该处于包含文件的目录中。此命令可能会损坏其他类型的文件,例如除了文本文件外在上下文中包含八进制 15 的文件(如,镜像文件中的字节)。

sed

你还可以使用流编辑器 sed 来删除回车符。但是,你必须提供第二个文件名。以下是例子:

 

  1. $ sed -e s/^M//” before.txt > after.txt

一件需要注意的重要的事情是,请不要输入你看到的字符。你必须按下 Ctrl+V 后跟 Ctrl+M 来输入 ^Ms 是替换命令。斜杠将我们要查找的文本(Ctrl + M)和要替换的文本(这里为空)分开。

vi

你甚至可以使用 vi 删除回车符(Ctrl+M),但这里假设你没有打开数百个文件,或许也在做一些其他的修改。你可以键入 : 进入命令行,然后输入下面的字符串。与 sed 一样,命令中 ^M 需要通过 Ctrl+V 输入 ^,然后 Ctrl+M 插入 M%s 是替换操作,斜杠再次将我们要删除的字符和我们想要替换它的文本(空)分开。 g(全局)意味在所有行上执行。

 

  1. :%s/^M//g

总结

dos2unix 命令可能是最容易记住的,也是从文本中删除回车的最可靠的方法。其他选择使用起来有点困难,但它们提供相同的基本功能。

原文地址:https://linux.cn/article-11389-1.html

延伸 · 阅读

精彩推荐
  • LinuxLinux服务器被rootkit恶意软件攻击后的处理方法

    Linux服务器被rootkit恶意软件攻击后的处理方法

    rootkit是一种恶意软件,而Linux是其重要的攻击对象,那么Linux被rootkit攻击后该怎么办呢?下面与大家分享下Linux服务器被rootkit攻击后的处理方法,感兴趣的...

    Linux教程网3062019-10-23
  • LinuxLinux如何使用shell命令检测PHP木马防止脚本木马的破坏

    Linux如何使用shell命令检测PHP木马防止脚本木马的破坏

    在Linux系统中,可使用shell命令检测PHP木马,为了防止脚本木马的破坏,保证网站的安全,学会使用shell命令查找PHP木马是非常重要的,下面有个方法,大家...

    服务器之家5472019-09-25
  • LinuxApache 多站点虚拟主机配置方法

    Apache 多站点虚拟主机配置方法

    Apache 多站点虚拟主机配置方法, 有这类需要的朋友可以参考下。...

    Linux教程网3662020-07-14
  • LinuxLinux系统xlsatom命令如何使用?

    Linux系统xlsatom命令如何使用?

    在Linux系统中有很多命令,xlsatoms命令可以用来定义搜索文件的范围和成分。今天小编将为大家分享的是Linux系统xlsatom命令的使用说明,希望对大家会有帮助...

    Linux之家3632019-05-30
  • Linuxlinux系统 如何在Crunchbang下恢复Openbox的默认配置

    linux系统 如何在Crunchbang下恢复Openbox的默认配置

    我作为一个Crunchbang用户,我最近搞乱了我的menu.xml配置文件,它负责下面的菜单显示。我的菜单配置文件中丢失了所有内容。由于我没有备份(最好备份配...

    linux教程网3802019-10-29
  • Linuxlinux中expect的介绍与使用示例

    linux中expect的介绍与使用示例

    expect是一种自动交互语言,能实现在shell脚本中为scp和ssh等自动输入密码自动登录。下面这篇文章主要介绍了linux中使用expect的方法示例,需要的朋友可以参...

    Lingxian_Kong11562021-12-22
  • LinuxLinux下的chkconfig命令详解

    Linux下的chkconfig命令详解

    大家都知道chkconfig命令在linux中使用是非常的关键的,我们可以利用chkconfig来对系统的一些启动与禁止相关设置,下面这篇文章小编就来给大家详细的介绍...

    Linux教程网9482021-12-03
  • Linux如何在Linux下设置录音笔时间

    如何在Linux下设置录音笔时间

    这篇文章主要介绍了如何在Linux下设置录音笔时间的方法,有这方面需要的朋友跟着学习下吧。...

    依云12022022-02-23