测试文件:test.txt
内如如下:
1 | 1,2,3,4,5 |
输入方式
1 | 通过管道 |
分割字段
1 | $0表示整条记录,$1表示分割后的第一个字段 |
过滤记录
- 正则过滤 /regular/
1 | awk '/9/{print $0}' test.txt |
- 条件过滤
1 | awk -F, '{if($1=="11") print $0}' test.txt |
常用变量
- FS 字段分隔符 Field separator
- NF 这条记录的总字段数
- NR 第几条记录
1 | 输出的字符串,通过双引号引住 |
循环
1 | awk 'BEGIN {FS=","} {for(i=1; i<=NF;i++){print $i}}' test.txt |
计算平均数
1 | awk -F, '{sum+=$1} END {print "Average = ", sum/NR}' test.txt |
去重
test文件增加几条记录
1 | cat test.txt |
- 去重输出
1 | 如果数组a不存在这一行,则打印 |
- 去重,并输出对应记录的重复数
1 | awk '{a[$0]++}END{for(w in a){print w "出现次数为" a[w]}}' test.txt |