【一句话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 总结
通过这篇文章的学习,我们应该了解以下几点:
通过 的方式删除换行符
通过 的方式删除回车符
通过 也可以删除换行符
领取专属 10元无门槛券
私享最新 技术干货