一句话shell系列之回车换行符的删除

【一句话shell系列】之回车换行符的删除

1 问题场景

我们需要把多行的数据转换到一行中,换成程序员的思维方式就是把每行的换行符删除就行。

Windows 下的创建的文本,两行之间是不止一个换行符,还包括一个回车符号。所以有的时候,我们需要把 Windows 下的回车换行符删除一个“回车符”,这样就变成了Linux的换房符号了。

关于Windows下的回车换行符的问题,简短的描述如下:

2 问题解决

为了便于说明问题,我们以“a.txt”作为测试文件,文件的内容如下:

2.1 使用 tr 命令删除换行符

Linux下可以使用tr命令删除换行符“\n”

注:因为最后一行的换行符也删除了,所以文件的内容和控制台的内容变成了同一行。

tr命令的说明如下:

tr 删除多个字符举例

2.2 删除Windows下的回车符号

在 Windows 下创建的文件,行末尾是回车换行符,但是人肉眼是不能直接看到的。正因为不能直接卡看到,所以一些 Windows 下的文本放到linux下,因为没有考虑回车符号,经常导致一些问题。甚至在进行 C 语言开发的时候,如果程序文件是 Windows 格式的话,在 gdb 调试的时候,也会出现断点位置和实际位置存在冲突的可能。

为了查看 肉眼不可见的回车符号,在 Linux 下可以通过以下的方式查看:

如上所示, “^M” 就是 Windows 下的文件比 Linux 的文件多出来的回车符号。

我们可以通过删除 ‘\r’ 的方式删除,如下:

也可以直接删除 “^M”。但是,如果你直接复制上去的话,你会发现,并没有达到效果:

这是为什么呢?

【重点】因为我们看到的 “^M”,并不是直接打印的两个字符!!!如果想使用键盘打印出这个字符的话,正确的姿势是,先按 “Ctrl + V” ,再按 “Ctrl + M”,如下:

小课堂:

通过 man 函数,可以查看 Linux 命令下大部分命令的函数说明

2.3 通过 sed 命令删除换行符

举例如下:

sed 命令因为牵扯到模式空间,所以需要解释的比较多,等以后专门介绍 sed 命令的时候,再做讨论。

3 总结

通过这篇文章的学习,我们应该了解以下几点:

通过 的方式删除换行符

通过 的方式删除回车符

通过 也可以删除换行符

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171218G000LT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券