正则表达式之Awk

前端之家收集整理的这篇文章主要介绍了正则表达式之Awk前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.awk是一种编程语言,程序有一个主循环维持,主循环负责对文件的每行进行处理

基本概念:

BEGIND:用于在主输入循环之前执行

主循环:对输入文件的行进行处理

END:循环执行后执行

记录:输入文件的每一行称为一个记录

域:记录中的每一个字符串称为一个域,域的分割符是空格键或tab键以及其它指定的键,默认是空格键,tab键看做是几个连续的空格键

$1:表示第一个域

$2:表示第二个域

$0:表示所有的域

用法一:模式匹配

awk'/模式/{动作}'文件

[root@zhu1 ~]# nl zhu.txt
1  ming yue ji shi you.
2  ba jiu wen qing tian
3  bu zhi tian shang gong que goad
4  #jin xi shi he nian root oo*
5  #an good man
[root@zhu1 ~]# awk '/^#/{print "ni hao awk"}' zhu.txt
ni hao awk
ni hao awk

用法二:默认与分割符是空格键

[root@zhu1 ~]# nl zhu.txt
1  ming yue ji shi you.
2  ba jiu wen qing tian
3  bu zhi tian shang gong que goad
4  #jin xi shi he nian root oo*
5  #an good man
[root@zhu1 ~]# awk '{print $1}' zhu.txt
ming
ba
bu
#jin
#an

-F:可以改变域分隔符

awk-F"分隔符"'{}'文件

[root@zhu1 ~]# awk '{print $1}' zhu.txt
ming
ba
bu
#jin
#an
[root@zhu1 ~]# awk -F "s" '{print $1}' zhu.txt
ming yue ji
ba jiu wen qing tian
bu zhi tian
#jin xi
#an good man

$后可以使用变量

[root@zhu1 ~]# awk '{print $3}' zhu.txt
ji
wen
tian
shi
man
[root@zhu1 ~]# awk 'BEGIN {m=1;n=2} {print $(m+n)}' zhu.txt
ji
wen
tian
shi
man

awk关系运算符及其意义

<:小于

>:大于

<=:小于等于

>=:大于等于

==:等于

!=:不等于

~:匹配正则表达式

!~:不匹配正则表达式

利用awk取出ip地址

[root@zhu1 ~]# ifconfig eth0 | grep 'inet addr'|awk -F : '{print $2}'| awk '{print $1}'
192.168.1.107

结合正则表达式的用法

[root@zhu1 ~]# ifconfig eth0 | grep 'inet addr' | awk -F [:" "]+ '{print $4}'
192.168.1.107

第二种用法

[root@zhu3 ~]# ifconfig eth0 | awk -F [:" "]+ 'NR==2 {print $4}'
192.168.70.133
[root@zhu3 ~]# ifconfig eth0 | awk -F '[ :]+' 'NR==2 {print $4}'
192.168.70.133

[:""]:表示以:或空格作为分隔符,+表示前面冒号或空格的0个或1个

猜你在找的正则表达式相关文章