linux三剑客与正则案例
awk:三剑客之老大,擅长取列,取行,计算
参数:
!:表示取反,排除
NR:显示行号
$0:表示显示一整行内容
-F:指定分隔符或者多个分隔符
例子:使用awk取出网卡中的ip
[root@web02 oldboy]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:1F:6D:B7
inet addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1f:6db7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:109302 errors:0 dropped:0 overruns:0 frame:0
TX packets:90828 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:75289221 (71.8 MiB) TX bytes:36886895 (35.1 MiB)
[root@web02 oldboy]# ifconfig eth0 |awk -F '[: ]+' 'NR==2 {print $4}'
10.0.0.3
[root@web02 oldboy]#
例子2:取出文件中的文件权限数字
[root@web02 oldboy]# stat oldboy.txt
File: `oldboy.txt'
Size: 246 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 396746 Links: 3
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-01-09 19:04:35.117568571 +0800
Modify: 2019-01-09 19:04:29.682566423 +0800
Change: 2019-01-09 19:04:29.685566229 +0800
[root@web02 oldboy]# stat oldboy.txt |awk -F '[(/]' 'NR==4{print $2}'
0644
grep:过滤
参数:
-v:排除
-A数字:显示过滤的内容及接下来的几行
-n:显示行号
egerp:支持高级的正则相当于gerp -E
--color=auto:给过滤出来的内容加上颜色
-o:表示grep正则的执行过程
例子:使用egrep过滤出IP地焉
sed:替换与修改文件内容
参数:
/需要删除的内容/d:表示删除
-n:取消默认输出,一般与p配合使用
-i:修改文件内容
例子:使用sed取出网卡中的IP地址
[root@web02 oldboy]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:1F:6D:B7
inet addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1f:6db7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:110510 errors:0 dropped:0 overruns:0 frame:0
TX packets:91567 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:75392237 (71.8 MiB) TX bytes:36965141 (35.2 MiB)
[root@web02 oldboy]# ifconfig eth0|sed -nr '2s#.*dr:(.*) Bc.*$#\1#gp'
10.0.0.3
##将inet替换成oldboy
[root@web02 oldboy]# ifconfig eth0|sed -nr '2s#inet#oldboy#gp'
oldboy addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0
例子2:使用sed取出文件权限数字
[root@web02 oldboy]# stat oldboy.txt
File: `oldboy.txt'
Size: 246 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 396746 Links: 3
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-01-09 19:04:35.117568571 +0800
Modify: 2019-01-09 19:04:29.682566423 +0800
Change: 2019-01-09 19:04:29.685566229 +0800
[root@web02 oldboy]# stat oldboy.txt |sed -nr '4p'
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[root@web02 oldboy]# stat oldboy.txt |sed -nr '4s#.*\(([0-9]+)##gp'
/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[root@web02 oldboy]# stat oldboy.txt |sed -nr '4s#.*\(([0-9]+).*$#\1#gp'
0644