正则表达式:正则表达式
sed的使用:linux(sed的使用)_梦有一把琐的博客-CSDN博客
grep的使用:
awk:
- 抓取文本内容
-F | 指定分割符 |
-v | 定义或修改一个awk的内部变量 |
$0 | 整行 |
$n | 第n列 |
NF | 列 |
$(NF-n) | 倒数第一列 |
NR | 行号 |
~/abc/ | 模糊匹配,==/abc/精确匹配 |
取第二行的第三列:
[root@test_7 ~]# ip a | awk 'NR==2{print $3}'
brd
取第二行和第三行:
[root@test_7 ~]# ip a | awk 'NR==2,NR==3'
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
取第二行和第六行:
[root@test_7 ~]# ip a | awk 'NR>1&&NR<7'
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
抓取指定字符串:
[root@test_7 ~]# ip a | awk '/inet /'
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 | awk '!/^.*inet /'
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:76:ff:b8 brd ff:ff:ff:ff:ff:ff
valid_lft forever preferred_lft forever
inet6 fe80::dcbe:188e:dfaa:7fc/64 scope link
valid_lft forever preferred_lft forever
取第一列、第三列、最后一列,显示行号:
[root@test_7 ~]# ip a | awk '{print NR,$1,$3,$NF}'
1 1: <LOOPBACK,UP,LOWER_UP> 1
2 link/loopback brd 00:00:00:00:00:00
3 inet scope lo
4 valid_lft preferred_lft forever
5 inet6 scope host
6 valid_lft preferred_lft forever
7 2: <BROADCAST,MULTICAST,UP,LOWER_UP> 1000
8 link/ether brd ff:ff:ff:ff:ff:ff
9 inet brd eth0
10 valid_lft preferred_lft forever
11 inet6 scope link
12 valid_lft preferred_lft forever
取eth0的ip:
[root@test_7 ~]# ifconfig | awk 'NR==2{print $2}'
192.168.200.150
抓取ip a中的ip:
[root@test_7 ~]# ip a | awk '/inet /' | awk 'NR==2{print $2}'
192.168.200.150/24
把UID大于1000的用户打印出来:
[root@test_7 ~]# cat /etc/passwd | awk -F: '$3>1000{print $1}'
test01
打印UID小于10,且登录为bash的用户:
[root@test_7 ~]# cat /etc/passwd | awk -F: '$3<10 && $NF~/bash/{print $1}'
root
[root@test_7 ~]# cat /etc/passwd | awk -F "[:/]" '$3<10 && $NF=="bash"{print $1}'
root