在Linux环中,sed叫做流编辑器,在shell脚本和Makefile中作为过滤一使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换成为另一种格式输出。
sed命令使用的场景包括以下一些:
▪ 常规编辑器编辑困难的文本。
▪ 太过于庞大的文本,使用常规编辑器难以胜任(比如说vi一个几百兆的文件)。
▪ 有规律的文本修改,加快文本处理速度(比如说全文替换)。
常见的用法如下(-i参数为直接修改原文件,请谨慎使用):
1.删除指定字符串的行(设指定字符串为abc)
sed -i '/adc/d' file
2.替换指定字符串(全局替换,若不加g为单个字符串替换)
sed -i 's/abc/acb/g' file
3.删除行首空格
sed -i 's/^[ ]*//g' filename
4.行后和行前添加新行
行后:sed 's/pattern/&/g' filename 行前:sed 's/pattern/&/g' filename
5.使用变量替换(使用双引号,常用于脚本中)
sed -e -i "s/$var1/$var2/g" filename
6.在第一行前插入文本
sed -i '1 i插入字符串' filename
7.在最后一行插入文本
sed -i '$ a插入字符串' filename
8.在匹配行前插入文本
sed -i '/pattern/ i "插入字符串"' filename
9.在匹配行后插入文本
sed -i '/pattern/ a "插入字符串"' filename
10.删除文本中空行和空格组成的行以及#号注释的行
grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d