如何在 Linux 中删除文本中的回车字符
回车 字符可以往回追溯很长一段时间 早在打字机上就有一个机械装置或杠杆将承载纸滚筒的机架移到右边,以便可以重新在左侧输入字母。他们在 Windows 上的文本文件上保留了它,但从未在 Linux 系统上使用过。当你尝试在 Linux 上处理在 Windows 上创建的文件时,这种不兼容性有时会导致问题,但这是一个非常容易解决的问题。
如果你使用 od(八进制转储octal dump)命令查看文件,那么回车(也用 Ctrl+M 代表)字符将显示为八进制的 15。字符 CRLF 通常用于表示 Windows 文本文件中的一行结束的回车符和换行符序列。那些注意看八进制转储的会看到 /r/n。相比之下,Linux 文本仅以换行符结束。
这有一个 od 输出的示例,高亮显示了行中的 CRLF 字符,以及它的八进制。
$ od -bc testfile.txt 0000000 124 150 151 163 040 151 163 040 141 040 164 145 163 164 040 146 T h i s i s a t e s t f 0000020 151 154 145 040 146 162 157 155 040 127 151 156 144 157 167 163 i l e f r o m W i n d o w s 0000040 056 015 012 111 164 047 163 040 144 151 146 146 145 162 145 156 == . /r /n I t s d i f f e r e n == 0000060 164 040 164 150 141 156 040 141 040 125 156 151 170 040 164 145 t t h a n a U n i x t e 0000100 170 164 040 146 151 154 145 015 012 167 157 165 154 144 040 142 == x t f i l e /r /n w o u l d b ==
虽然这些字符不是大问题,但是当你想要以某种方式解析文本,并且不希望就它们是否存在进行编码时,这有时候会产生干扰。
3 种从文本中删除回车符的方法幸运的是,有几种方法可以轻松删除回车符。这有三个选择:
dos2unix你可能会在安装时遇到麻烦,但 dos2unix 可能是将 Windows 文本转换为 Unix/Linux 文本的最简单方法。一个命令带上一个参数就行了。不需要第二个文件名。该文件会被直接更改。
$ dos2unix testfile.txt dos2unix: converting file testfile.txt to Unix format...
你应该会发现文件长度减少,具体取决于它包含的行数。包含 100 行的文件可能会缩小 99 个字符,因为只有最后一行不会以 CRLF 字符结尾。
之前:
-rw-rw-r-- 1 shs shs 121 Sep 14 19:11 testfile.txt
之后:
-rw-rw-r-- 1 shs shs 118 Sep 14 19:12 testfile.txt
如果你需要转换大量文件,不用每次修复一个。相反,将它们全部放在一个目录中并运行如下命令:
$ find . -type f -exec dos2unix {} /;
在此命令中,我们使用 find 查找常规文件,然后运行 dos2unix 命令一次转换一个。命令中的 {} 将被替换为文件名。运行时,你应该处于包含文件的目录中。此命令可能会损坏其他类型的文件,例如除了文本文件外在上下文中包含八进制 15 的文件(如,镜像文件中的字节)。
你还可以使用流编辑器 sed 来删除回车符。但是,你必须提供第二个文件名。以下是例子:
$ sed -e s/^M// before.txt after.txt
一件需要注意的重要的事情是,请不要输入你看到的字符。你必须按下 Ctrl+V 后跟 Ctrl+M 来输入 ^M。s 是替换命令。斜杠将我们要查找的文本(Ctrl + M)和要替换的文本(这里为空)分开。
你甚至可以使用 vi 删除回车符(Ctrl+M),但这里假设你没有打开数百个文件,或许也在做一些其他的修改。你可以键入 : 进入命令行,然后输入下面的字符串。与 sed 一样,命令中 ^M 需要通过 Ctrl+V 输入 ^,然后 Ctrl+M 插入 M。%s 是替换操作,斜杠再次将我们要删除的字符和我们想要替换它的文本(空)分开。 g(全局)意味在所有行上执行。
:%s/^M//g
dos2unix 命令可能是最容易记住的,也是从文本中删除回车的最可靠的方法。其他选择使用起来有点困难,但它们提供相同的基本功能。
via: https://www.networkworld.com/article/3438857/how-to-remove-carriage-returns-from-text-files-on-linux.html
作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
48463.html
linuxwindows相关文章
- 修改Linux系统host文件记录的方法(修改hostlinux)
- Linux下如何快速改变文件夹名称(linux文件夹改名)
- Linux系统快速安装Gftp文件传输工具(linux安装gftp)
- 调整Linux系统连接超时时间(linux连接超时)
- 界面探索Linux的精彩世界:字符与图形界面(linux字符图形)
- 发挥Linux系统的威力:如何设置锁屏(linux系统锁屏)
- Linux系统精通与高效使用(linux好书推荐)
- Linux异步线程:极限扩展实现(linux异步线程)
- Linux安全:有效实施的策略(linux安全策略)
- 由零开始:如何在电脑上安装Linux(电脑如何装linux)
- Linux 的分支:探索不同发行版(linux的分支)
- 命令Linux下Touch命令使用指南(linux的touch)
- Linux如何修改分组及用户组关联?(linux修改分组)
- 如何在Linux上安装GCC(linux安装gcc)
- 探讨Linux系统安全性:如何保障你的电脑安全呢?(linux系统安全性)
- Linux如何显示挂载?(linux显示挂载)
- 如何查看 Linux 系统中的库版本?(linux查看库版本)
- 简单易学:如何在Linux上查找和安装程序(linux查找安装程序)
- 如何高效配置Linux日志服务器(linux配置日志服务器)
- 服务如何架设Linux下的FTP服务(linux架设ftp)
- 系统修复Linux坏道:系统恢复最优方案(linux坏道)
- Linux如何快速安装插件(linux如何安装插件)
- Linux:高效压缩大文件(linux大文件压缩)
- 如何在Linux上写串口程序(linux写串口)
- 欢迎来到Linux世界:开源技术的引领与创新(linux欢迎)
- Linux 简易教程:如何编辑和存储过程?(linux编辑存储过程)
- Linux系统中文件传输的快捷命令(linux 文件传输命令)
- Linux下如何配置打印机?(linux配置打印机)
- 如何使用 Linux 查看操作系统信息(linux查看操作系统)
- 深入Linux系统:查看MBR的方法(查看linux的MBR)
- Linux服务器的平稳迁移之路(linux 服务器迁移)
- Linux下如何配置用户权限(linux设置用户权限)