sed 是stream editor,流文本处理工具。工作流程大致是一行一行读入并且处理。能够配合正则表达式完成一些诸如替换和删除的文本处理工作。

1.替换文本:

sed 's/pattern/replace/' filename

当然也可以从stdin获取输入,cat filename | sed 's/pattern/replace/'

这里pattern是要查找的模式,可以是正则表达式,replace是要替换后的内容。这个命令默认是只查找每一行的第一个匹配,如果要全部替换,需要在最后加上g,也就是

sed 's/pattern/replace/g' filename

当然也可以通过ng来指定替换每一行第几个匹配。

默认只是输出替换后的内容,但是不会改变原有本文的内容,可以使用-i参数在原有文本改变。mac下必须给出备份文件名,如果文件名长度为0,则不备份。


2.移除匹配文本的那一行:

sed '/pattern/d' filename