常用选项:
-n:不输出模式空间内容到屏幕,即不自动打印
-e:多点编辑
-f:从指定文件中读取编辑脚本
-r:支持使用扩展正则表达式
-i:修改源文件
编辑命令:
d: 删除模式空间匹配的行
p: 显示模式空间中的内容
a [\]text:在指定行后面追加文本支持使用\n实现多行追加
i [\]text:在行前面插入文本
c [\]text:替换行为单行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后
=: 为模式空间中的行打印行号
!:模式空间中匹配行取反处理
sed–n ‘3p’ file
sed–n ‘5,10p’ file
sed-n '5,+5p' file
~]# sed -n '/^U/p' /etc/fstab
~]# sed -n '1~2p' file
~]# sed -n '2~2p' file
~]# sed -n '/^a/,/^s/p' file
~]# sed -n '1,/^s/p' file
~]# sed '/^a/a\a new line' file
sed -i.bak '/^r/r /etc/issue'/testdir/f1
~]# sed -n '/root/p' /etc/passwd
~]# sed -n '2,/root/p' /etc/passwd
~]# sed -n '/^$/=' file
~]# sed -n -e '/^$/p' -e '/^$/=' file
~]# sed '/^$/d' file
h: 把模式空间中的内容覆盖至保持空间中
H :把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G :从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行 覆盖 至模式空间
N :追加匹配到的行的下一行至模式空间
d: 删除模式空间中的行
D :删除 当前模式空间开端至\n 的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
sed -n 'n;p' FILE
sed '1!G;h;$!d' FILE
1!表示不是第一行才做操作(G),是第一行就不做后面的操作(G),
$!表示不是最后一行才做操作(d),是最后一行就不做后面的操作
sed '$!N;$!D' FILE
sed '$!d' FILE
sed ‘G’ FILE
sed ‘g’ FILE
sed ‘/^$/d;G’ FILE
sed 'n;d' FILE
sed -n '1!G;h;$p' FILE
思考:
1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
3、在/root/install.log每一行行首增加#号
4、在/etc/fstab文件中不以#开头的行的行首增加#号
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
6、利用sed 取出ifconfig命令中本机的IPv4地址
7、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
提示:3、4题用替换其他题都需要正则表达式基础。学了以后再来练习即可