一、简介
二、语法
1)模式
/模式/p- 印出所有匹配“模式”的行 /模式/d- 删除所有匹配“模式”的行 s- 替换字符串 s/模式/替换文字/- 将匹配“模式”的行转换成“替换文字” s命令预设只替换每行匹配的第一串文字,也就是说,若每行里有多个匹配该模式的字符串,后面的将不会被s转换。在这个情况可以用g命令来替换所有匹配的文字,如下: s/模式/替换文字/g- 将所有匹配“模式”的字符串转换成“替换文字”
2)命令行选项
-f- 按照指定的sed脚本里面的命令来进行转换 -i- 表示将转换结果直接插入文件中(若不用-i,一般sed命令不会改变原文档里的内容,而只会输出到命令行。当然命令行输出的内容也可以用“>”转存到另外一个文件里。) -e- 允许一次执行多个匹配命令
三、教程
1)使用shell变量
2)高级用法
四、实例
1)在指定行前插入内容
sed -i '2iabc' test.txt #在test.txt文件的第2行的上面插入abc,abc所行为第2行,原来行变成了第3行
2)在指定行后插入内容
sed -i '2aabc' test.txt #在test.txt文件的第2行的下面插入abc,abc所在行为第3行,原来行不变任然为第2行
3)通过 /n 指定匹配出现次数(/n
中的 n 可以取 1 ~ 512 中的数)
sed 's/[a-zA-Z]* //2' <old >new #这里的 /2 将匹配到的第二个单词删除
4)打印从PATTERN-1到PATTERN-2之间的行
sed -n '/PATTERN-1/,/PATTERN-2/{//!p}' input.txt
5)追加空行
sed G- 在每一行后面增加一空行 sed 'G;G' - 在每一行后面增加两行空行
6)经典用例
7)删除行首空格
sed -e 's/^[ ]*//g' file
8)删除行尾空格
sed -e 's/[ ]*$//g' file
9)同时去除首尾空格
sed -e 's/^[ ]*//g’ -e ‘s/[ ]*$//g' file
10)