awk二十问-【AWK学习之旅】

---===AWK学习之旅===---
一行命令:
1.打印输入每行的字段总数:
最后一行的字段总数:END{print NF}
每行都显示字段总数: {print NF}
 
2.打印指定行:
awk 'NR==3' emp.txt
 
3.打印每行的最后一列:
awk '{print $NF}' emp.txt
 
4.  打印最后一行最后一列:
awk 'END{print $NF}' emp.txt
awk '{field = $NF} END {print $field}' emp.txt 
 
5.打印字段数量大于4的所有行
awk 'NF > 4' emp.txt
 
6.打印出每行最后一个字段值>4
awk '$NF>4' emp.txt
 
7. 打印出所有字段数量
awk '{nf = nf + NF}END{print nf}' emp.txt
 
8.打印含有某关键字的行总数:
awk '/Mary/{lines = lines + 1}END{print lines}' emp.txt  
 
9.打印出第一个字段最大的行:
 awk '$1 > maxfield{maxfield = $1;maxline = $0}{print maxfield,maxline}' emp.txt
 
10.最少有一个字段,空行不打印
awk 'NF>0' emp.txt
 
11.打印每行字段的总数及每行内容:
awk '{print NF,$0}' emp.txt
 
12.打印每行字符总数大于12
awk 'length($0)>12' emp.txt
 
13.打印每行指定字段
awk '{print $2,$1}' emp.txt
 
14.交换两个字段的顺序,并打印所有行:
awk '{temp = $1;$1 = $2; $2 = temp;print}' emp.txt
 
15.第一列被行号替换,并打印所有行:
 awk '{$1 = NR;print }' emp.txt
 
16.删掉第二列,并打印所有
awk '{$2 = "";print }' emp.txt
 
17. 翻转行字段的顺序,并打印
awk '{for(i=NF;i>0;i=i-1) printf("%s ",$i); printf("\n")}' emp.txt
 
18.打印每行数字字段累加和:sum
[root@monitor awkdir]# awk '{for (i=1;i<=NF;i=i+1) sum = sum + $i ;print sum}' emp.txt
4
7.75
21.75
46.75
74.25
96.5
 
19.打印所有行中数字字段相加的和:sum
[root@monitor awkdir]# awk '{for (i=1;i<=NF;i=i+1) sum = sum + $i}END{print sum}' emp.txt
96.5
 
20.打印每行值:绝对值
awk '{for (i=1;i<=NF;i=i+1) if($i<0) $i=-$i;print}' emp.txt
posted @ 2017-07-27 17:03  缥缈之旅  阅读(345)  评论(0编辑  收藏  举报