分组求和
1
|
awk
'{s[$1] += $2}END{ for(i in s){ print i, s[i] } }'
file1
>
file2
|
以第一列 为变量名 第一列为变量,将相同第一列的第二列数据进行累加打印出和.
1
|
awk
'{s[$1" "$2] += $3}END{ for(i in s){ print i, s[i] } }'
file1
>
file2
|
以第一列和第二列为变量名, 将相同第一列、第二列的第三列数据进行累加打印出和
1
|
awk
'{s[$1] += $2; a[$1] += $3 }END{ for(i in s){ print i,s[i],a[i] } }'
haha
.
txt
|
如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和
匹配
1、匹配交集项
1
|
awk
'NR==FNR{a[$1]=1}NR>FNR&&a[$1]>0{print $0}'
file1(字段:
QQ)
file2(字段:
QQ 点券值
)
>
file3
|
如果file1、file2中,2个文件的第一列值相同,输出第2个文件的所有列
注意:数据量如果达到4Gb以上或者行数达到一亿级别,建议将file2进行split分割,否则就算是32G的内存的机器都会被吃掉;
1
|
awk
'NR==FNR{a[$1" "$2]=1}NR>FNR&&a[$1" "$2]>0{print $0}'
file1
file2
|