语句使用基本AWK
awk [option] 'cmd' file; $0代表所有 , 默认分隔符是空格
假设存在 test.txt
name age heght sex
jack 12 170 man
luck 18 190 woman
tom 20 200 man
1:awk '{print $1,$4}' test.txt--分隔出第一列第四列的内容
name sex
jack man
luck woman
tom man
2:awk '$1=="jack" && $2==12{print $0}' test.txt 得到第一个等于jack,第二个为12的行。打印行所有数据。
jack 12 170 man
3:awk '$1=="jack" && $2==12|| NR==1{print $0}' test.txt
NR==1默认输出第一行, 要么满足条件,要么为第一行,就输出。
name age heght sex
jack 12 170 man
4:awk -F "," '{print $2}' test.txt -- awk-f以逗号作为分隔符,并且打印第二列
假设存在
name, age, heght, sex
jack, 12 ,170, man
luck, 18, 190, woman
得到
age
12
18
5:统计使用
awk '{array[$1]++}END{for (i in array) print i "\t" array[i]}' 前接管道符|传参,或者后接文件
array:自定义的数组,如果第一列$1出现重复就自增1
END :扫描统计结束
{for(i in array)}:循环自定义的数组,定义变量 i
print i : 打印 i
"\t" 拼接回车符
array[i] : 自定义数组
实例:
aa[111111111111111]
aa[111111111111111]
bb[22222222222222]
bb[22222222222222]
cc[33333333333333]
执行awk '{array[$1]++}END{for (i in array) print i "\t" array[i]}' 得到
aa[111111111111111] 2
bb[22222222222222] 2
cc[33333333333333] 1