shell运用sed删除换行符 ,并去掉空格
a
·
文本示例:
[abc]
[efg]
[ag] [bd]
目标:去掉换行,并去掉所有的空格
[abc][efg][ag][bd]
#sed ':a;N;$!ba;s/\n/ /g' :a;N;$!ba;是把内容合并为一行,因为sed默认是逐行处理的, s/\n/ /g 是把换行符替换为空格
#sed s/[[:space:]]//g 把空格替换为空,即删除空格
xxxx|sed ':a;N;$!ba;s/\n/ /g'|sed s/[[:space:]]//g
难点解读:
sed ‘:a;N;$!ba;s/\n/ /g’ 这将在一个循环里读取整个文件,然后将换行符替换成一个空格。
当然:也可以直接删除换行符,只需要把替换的目标内容由空格替换为空(注意:不是空格) //之间没有空格
sed ‘:a;N;$!ba;s/\n//g’
语法说明:
通过 :a创建一个标记
通过N追加当前行和下一行到模式区域
如果处于最后一行前,跳转到之前的标记处。 ! b a ( !ba ( !ba(! 意思是不在最后一行做这操作 (最后一行就被当成最后的一行)).
最后置换操作把模式区域(就是整个文件)的每一个换行符换成一个空格。
示例追加:
$ echo -e "1\n2" | sed ':a;N;$!ba;s/\n/ /g'
1 2
参考
更多推荐
已为社区贡献35条内容
所有评论(0)