请教sed删除换行符的方法

如题所述

因为sed是按行处理文本的,每次只读入一行到内部模式空间内。

因此要删除换行符,需要用sed的N命令全部读入(append方式)所有内容后再用s命令全局替换换行符为空。


用sed做还得考虑要读入多少行的问题,所以这里其实用awk做会更简单。

就上面这个例子:

awk -v RS="" '{gsub("\n","");print}' file.txt

设置记录分隔符(RS)为空,即将所有文件内容看作一条记录(默认是一行一条记录)。

用awk的内置函数gsub全局替换换行符为空,之后print打印即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-03-16

因为sed是按行处理文本的,每次只读入一行到内部模式空间内。

因此要删除换行符,需要用sed的N命令全部读入(append方式)所有内容后再用s命令全局替换换行符为空。

用sed做还得考虑要读入多少行的问题,所以这里其实用awk做会更简单。

就上面这个例子:

 

   

awk -v RS="" '{gsub("\n","");print}' file.txt

   

设置记录分隔符(RS)为空,即将所有文件内容看作一条记录(默认是一行一条记录)。

用awk的内置函数gsub全局替换换行符为空,之后print打印即可。

相似回答