当回车字符(Ctrl+M
)让你紧张时,别担心。有几种简单的方法消除它们。
“回车”字符可以往回追溯很长一段时间 —— 早在打字机上就有一个机械装置或杠杆将承载纸滚筒的机架移到右边,以便可以重新在左侧输入字母。他们在 Windows 上的文本文件上保留了它,但从未在 Linux 系统上使用过。当你尝试在 Linux 上处理在 Windows 上创建的文件时,这种不兼容性有时会导致问题,但这是一个非常容易解决的问题。
如果你使用 od
(八进制转储)命令查看文件,那么回车(也用 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
来删除回车符。但是,你必须提供第二个文件名。以下是例子:
$ sed -e “s/^M//” before.txt > after.txt
一件需要任意的重要的事情是,请不要输入你看到的字符。你必须按下 Ctrl+V
后跟 Ctrl+M
来输入 ^M
。s
是替换命令。斜杠将我们要查找的文本(Ctrl + M
)和要替换的文本(这里为空)分开。
vi
你甚至可以使用 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
总结
以上所述是小编给大家介绍的 Linux 中删除文本中的回车字符的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。