因为sed是按行处理文本的,每次只读入一行到内部模式空间内。
因此要删除换行符,需要用sed的N命令全部读入(append方式)所有内容后再用s命令全局替换换行符为空。
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/1ad5ad6eddc451dab0d499a1b1fd5266d016325d?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
用sed做还得考虑要读入多少行的问题,所以这里其实用awk做会更简单。
就上面这个例子:
awk -v RS="" '{gsub("\n","");print}' file.txt
设置记录分隔符(RS)为空,即将所有文件内容看作一条记录(默认是一行一条记录)。
用awk的内置函数gsub全局替换换行符为空,之后print打印即可。