因为sed是按行处理文本的,每次只读入一行到内部模式空间内。
因此要删除换行符,需要用sed的N命令全部读入(append方式)所有内容后再用s命令全局替换换行符为空。
用sed做还得考虑要读入多少行的问题,所以这里其实用awk做会更简单。
就上面这个例子:
awk -v RS="" '{gsub("\n","");print}' file.txt
设置记录分隔符(RS)为空,即将所有文件内容看作一条记录(默认是一行一条记录)。
用awk的内置函数gsub全局替换换行符为空,之后print打印即可。