AWK 中级篇

本篇文章,续上一篇文章《AWK 初级篇》。

实战(7个案例)

//测试文本 score.txt(同上一篇)
Aaron    Physics    87
Abel     Maths      98
Rahul    Chinese    90
Buck     Biology    87
Byron    English    85
Dave     History    89
Enoch    Chemistry  89
//取出成绩 大于 等于 90分的数据。
[root@vagrant-centos65 awk]# awk '$3 >= 90 {print $0}' score.txt
Abel     Maths      98
Rahul    Chinese    90
//取出成绩 >= 90分 and <=95的数据。
[root@vagrant-centos65 awk]# awk '($3 >= 90) && ($3 <= 95) {print $0}' score.txt
Rahul    Chinese    90
//取出成绩 <= 86分 或者 >=96的数据。
[root@vagrant-centos65 awk]# awk '($3 <= 86) || ($3 >= 96) {print $0}' score.txt
Abel     Maths      98
Byron    English    85
//计算总分数(BEGIN END 语法)
[root@vagrant-centos65 awk]# awk 'BEGIN{cnt=0}{cnt+=$3} END {print cnt}' score.txt
625
//匹配第三个字符等于c的行
[root@vagrant-centos65 awk]# awk '/^..c/' score.txt
Buck     Biology    87
//打印表头
[root@vagrant-centos65 awk]# awk 'BEGIN{print "Name Socre\n----------"} {print $1 "\t" $3}' score.txt
//统计相同的次数,并且按照重复次数排序
[root@vagrant-centos65 awk]# awk '{a[$3]++} END{for(i in a){print i,a[i] | "sort -r -n -k2"}}' score.txt
89 2
87 2
98 1
90 1
85 1

温馨提示:
如果想把内容写入到文件中,可在命令后添加 “> 文件名” 即可。


Thanks ~

你可能感兴趣的:(AWK 中级篇)