4三剑客老大awk

Awk知识:

语法:awk ‘pattern{action}’

 

Awk ‘BEGIN{}END{}’开始和结束

Awk ‘/hello world/’正则匹配字符串

Awk ‘/11/,/19/’区间选择,例如seq 30|awk ‘/11/,/19/’

Awk ‘$2~/xxx/’在第二列中匹配字段xxx

Awk ‘NR==3’取第三行

Awk ‘NR>1’ 取大于1的所有行

 

 

 

 

 

 

 

 

 

 

 

 

awk内置变量

FS字段分隔符

NF字段数

OFS输出数据的字段分隔符

ORS输出字段的行分隔符,多行拼凑一行

RS记录分隔符,一行拆多行

NR记录数

 

 

 

 

 

 

1:以冒号为分隔符拆行

 

[root@tyjs09 ~]# echo $PATH|awk 'BEGIN{RS=":"}{print NR $0}'
1/usr/local/sbin
2/usr/local/bin
3/usr/sbin
4/usr/bin
5/root/bin

2:合并多行为一行

 

[root@tyjs09 ~]# cat test
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin

[root@tyjs09 ~]# cat test|awk 'BEGIN{FS="\n"; ORS=":"}{print $0}'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

3:求平均值

 

[root@tys09 ~]# awk 'BEGIN{print 9*9}'
81

[root@tys09 ~]# awk 'BEGIN{printf 2/3}'
0.666667

[root@tys09 ~]# awk 'BEGIN{printf "%.f\n",2/3}'
1
[root@tys09 ~]# awk 'BEGIN{printf "%.2f\n",2/3}'
0.67
[root@tys09 ~]# seq 10 2 20|awk '{sum+=$1}{print sum/NR}'
10
11
12
13
14
15

 

4awk的词典用法

 

[root@instance-r5y0pf5d ~]# seq 10 2 20|awk '$1>14{data[NR]=$1}END{for (i in data)print data[i]}'
16
18
20

 

<p>&nbsp;</p><div><div class="cnblogs_code"><div class="cnblogs_code_toolbar">&nbsp;</div></div></div>

posted @ 2020-12-23 16:23  linuxTang  阅读(99)  评论(0)    收藏  举报