Linux sed

一、简介

 

 

二、语法

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)

原文地址:https://www.cnblogs.com/274914765qq/p/6109619.html