正则表达式规则:
请看上一章:linux-正则表达式规则_梦有一把琐
awk的使用:
请看下一章:
grep的使用:
请看下一章:
sed:
- -n:取消默认输出
- -i:修改文件内容
- -e:允许多次编译
- -r:支持扩展正则
- a:文本追加
- d:匹配行的文本
- i:插入,指定行前插入文本
- p:打印
- =:显示匹配的行号
- s///:替换
输出2-3行内容:
[root@test_7 ~]# ip a | sed -n '2,3p'
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
过滤含有inet字符的行:
[root@test_7 ~]# ip a | sed -n '/inet /p'
inet 127.0.0.1/8 scope host lo
inet 192.168.200.150/24 brd 192.168.200.255 scope global eth0
删除含有inet字符的行:
[root@test_7 ~]# ip a | sed -n '/inet /d'
指定删除第3行或4-6行:
[root@test_7 ~]# ip a | sed '3d'
[root@test_7 ~]# ip a | sed '4,6d'
打印空行、显示行号、不打印空行:
[root@test_7 ~]# sed -n '/^$/p' test
[root@test_7 ~]# sed -n '/^$/=' test
2
4
[root@test_7 ~]# sed -n '/^$/!p' test
111
222
333
444
将111替换成000:
[root@test_7 ~]# sed 's/111/000/g' test
000
222
333
444
在第二行追加文本aaa:
[root@test_7 ~]# sed '2a aaa' test
111
aaa
222
333
444
取ip的几种方法:
[root@test_7 ~]# ip a | sed -n '/inet /p' | sed -n '2p' | awk '{print $2}'
192.168.200.150/24
[root@test_7 ~]# ip a | awk 'NR==9{print $2}'
192.168.200.150/24
[root@test_7 ~]# ip a |sed -n '9p' | sed 's/^.*inet //g' | sed 's/brd.*$//g'
192.168.200.150/24
使用扩展正则:
[root@test_7 ~]# ip a | sed -rn 's/^.*inet (.*) brd.*$/\1/gp'
192.168.200.150/24
[root@test_7 ~]# ifconfig | sed -rn 's/^.*inet (.*) net.*$/\1/gp' | sed '2d'
192.168.200.150
取hosts文件的权限:
[root@test_7 ~]# stat /etc/hosts | sed -rn 's/^Acc.* \(0(.*)\/-.*$/\1/gp'
644