sed本身是一个管道命令,可以分析标注你输入。而且sed还可以将数据进行替换、删除、新增、选取特定行等功能。
命令:sed [-nefr] [操作]
选项与参数
-n:安静模式,只有经过特殊处理的行才会被输出。
-e:直接在命令行模式下进行编辑。
-f:将操作写在文件内,-f filename可以直接执行filename中的sed操作。
-r:使用扩展正则表达式的语法。
-i:直接修改读取的文件内容,而不是由屏幕输出。a:新增,在目前的下一行
c:替换
d:删除
i:新增,在目前的上一行
p:打印,通常与-n一起使用
s:替换,通常搭配正则表达式使用
1、命令使用说明
1.1 增加信息操作
(1)在最后一行的后面添加新的一行
sed '$a 内容' 文件(2)在最后一行的前面添加新的一行
sed '$i 内容' 文件(3)在第一行前面添加新的一行
sed '1i 内容' 文件(4)在第一行后面添加两行,drink和milk
sed '2adrink\nmilk' test.txt
1.2 修改信息操作
(1)替换指定行的指定内容
sed '行号s#要替换的内容#替换的内容#g' 文件
例:替换test.txt中第四行的en为an
sed '4#en#an#g' test.txt(2)替换全文所有指定内容
sed 's#a#e#g' test.txt(3)替换2-5行内容为【No 2-5 number】
sed '2,5c No 2-5 number' test.txt
1.3 删除信息操作
(1)删除2-5行的内容
sed '2,5d' test.txt(2)删除2-最后一行的内容
sed '2,$d' test.txt(3)删除空白行
sed '/^$/d' test.txt(4)删除最后六行内容
for ((i=1;i<=6;i++));do sed -i "$d";done
2、综合练习
(1)查找jfedu所在行,并在其下一行添加word字符
sed '/jfedu/aword' test.txt
(2)查找以.test结尾的行,并在其行尾添加字符串word
sed 's/test$/&word/g' test.txt
注释:&表示添加
(3)修改SELINUX策略
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
sed -i '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config