加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式之Awk

发布时间:2020-12-14 02:17:07 所属栏目:百科 来源:网络整理
导读:1.awk是一种编程语言,程序有一个主循环维持,主循环负责对文件的每行进行处理 基本概念: BEGIND:用于在主输入循环之前执行 主循环:对输入文件的行进行处理 END:循环执行后执行 记录:输入文件的每一行称为一个记录 域:记录中的每一个字符串称为一个域

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个

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读