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
原文地址:https://www.cnblogs.com/yjiu1990/p/10272984.html