之前在linux系统执行以下命令:
ls file |xargs sed -i 's/\n//g'
然而却发现没有任何效果,百度之后发现 sed是按行处理文本数据的,每次处理一行数据后,都会在行尾自动添加trailing newline。
如果非要使用sed命令,实现替换file文本内容的换行符为空的话,那么就要了解sed的分支条件命令,以及了解sed的pattern space模式空间和hold space保持空间。即,连续两行执行一次sed命令,这样就可以把前一行的\n替换完成。
最终实现命令如下例所示:
sed ":a;N;s/\n//g;ta" a.txt
N是把下一行加入到当前的hold space模式空间里,使之进行后续处理,最后sed会默认打印hold space模式空间里的内容。也就是说,sed是可以处理多行数据的。
:a和ta是配套使用,实现跳转功能。t是test测试的意思。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!