sed命令之将换行符转换为空格的方法

换行符“\n”
第一次用了下面的命令,发现并没有任何用

[root@foundation56 Desktop]# sed -i 's/\n/ /g' test 
[root@foundation56 Desktop]# cat test 
1
2
3
4
5
6

后来查看了许多博客才知道:sed是按行处理文本数据的,每次处理一行数据后,都会在行尾自动添加trailing newline,其实就是行的分隔符即换行符。

如果非要使用sed命令,实现替换test文本内容的换行符为其他的话,那就需要了解sed的分支条件命令,以及了解sed的pattern space模式空间和hold space保持空间。即,连续两次执行一次sed命令,这样就可以把前一行的\n替换完成。

最终实现方法如下:

[root@foundation56 Desktop]# sed -i 'N;s/\n/ /g' test 
[root@foundation56 Desktop]# cat test 
1 2
3 4
5 6
[root@foundation56 Desktop]# sed -i ':a;N;s/\n/ /g;ta' test 
[root@foundation56 Desktop]# cat test 
1 2 3 4 5 6

N就是把下一行加入到当前的hold space模式空间中,使之进行后续处理,最后sed会默认打印除hold space模式空间里的内容。也就是说,sed是可以处理多行数据的。

:a和ta是配套使用的,实现跳转功能。t是test测试的意思。
另外,还有:a和ba的配套使用方法,也可以实现调转功能。b是branch分支的意思。

sed -i ':a;N;s/\n/ /g;ba' test

参考博客:https://blog.csdn.net/u011729865/article/details/71773840

你可能感兴趣的:(shell)