linux之awk的简单使用

本文介绍了如何使用awk工具处理文本文件,包括打印指定列、指定分隔符、使用内部变量NF和NR、截取字符串、确定字符串长度及求列和等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

awk:一个基于列的文本处理的工具。awk认为文件是结构化的,即由单词和各种空白字符组成的,空白字符指的是空格,tab,以及连续的空格,tab。每个非空白的部分叫做"域",从左到右依次是第一个域,第二个域等。$1表示第一个域,$0表示全部域。

1.打印指定域
例如打印第一列和第二列:

[root@node1 test]# cat awk.txt 
bob   32000 32
lily  12900 23
alice 20000 24 beijing
[root@node1 test]$ awk '{print $1,$2}' awk.txt 
bob 32000
lily 12900
alice 20000

例如打印所有列:
[root@node1 test]# awk ‘{print $0}’ awk.txt
bob 32000 32
lily 12900 23
alice 20000 24 beijing

2.指定分隔符
默认情况下是使用空白字符作为分隔符的,也可用-F参数指定分隔符。例如:

[root@node1 test]# awk -F : '{print $1,$3}' /etc/passwd 
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12

3.内部变量NF,NR
当文件比较大时,每行的列数可能都不一样,可使用内部变量NF查看每行的域的个数。例如:awk.txt的最后一行多一列,因此多一个域

[root@node1 test]# awk  '{print NF}' awk.txt 
3
3
4

在内部变量NF加一个$,则代表的是最后一列,例如:打印最后一列和倒数第二列

[root@node1 test]# awk  '{print $NF}' awk.txt 
32
23
beijing
[root@node1 test]# awk '{print $(NF-1)}' awk.txt 
32000
12900
24

NR:代表的是这个文本文件的行数,也就是行号。

[root@node1 test]# awk '{print NR}' awk.txt 
1
2
3

4.截取字符串
awk可使用substr函数对指定域截取字符串。用法如下:

substr(指定域,开始字符的位置,字符的个数)

若结束的位置为空,则表示到该域的最后一个字符,例如:

[root@node1 test]# awk '{print substr($1,2)}' awk.txt 
ob
ily
lice
[root@node1 test]# awk '{print substr($1,2,2)}' awk.txt 
ob
il
li

5.确定字符串的长度
可使用内部变量length打印出每行字符串的长度。例如:

[root@node1 test]# awk '{print length}' awk.txt 
14
14
22

6.求列和
可以对指定域进行求和。例如:

[root@node1 test]# cat awk.txt 
bob   32000 32
lily  12900 23
alice 20000 24 beijing
[root@node1 test]# awk 'BEGIN{total=0}{total+=$3}END{print total}' awk.txt 
79

求平均值如下所示:

[root@node1 test]# awk 'BEGIN{total=0}{total+=$3}END{print total/NR}' awk.txt 
26.3333

以上介绍的是awk比较简单的用法,感兴趣的还可以再深入研究它的使用方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远不要矫情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值