如果您需要按排序后的形式输出,请尝试以下内容。
awk -F, '$2{array[$1]++} END{for(k in array){print k,array[k] | "sort -k1"}}' Input_file
输出将如下所示。
Item1 3
Item2 2
Item3 1
Item4 1
Item5 1
编辑:由于原帖作者要求提供第一和第二字段的计数,所以请尝试以下操作。
awk -F, '$2{array[$1]++;array2[$1" "$2]++;array3[$2]++} END{for(u in array){for(y in array3){if(array2[u" "y]){print u,array[u],y,array2[u" "y]}}}}'
或者
awk -F, '$2{
array[$1]++;
array2[$1" "$2]++;
array3[$2]++
}
END{
for(u in array){
for(y in array3){
if(array2[u" "y]){
print u,array[u],y,array2[u" "y]
}
}
}
}' Input_file
输出如下。
Item1 3 200 2
Item1 3 600 1
Item2 2 500 1
Item2 2 800 1
Item3 1 900 1
Item4 1 100 1
Item5 1 444 1
EDI2: 根据OP的要求,现在添加一种解决方案。该方案将针对每个$1值省略任何重复的$2计数。
awk -F, '$2 && !array2[$1,$2]++{array[$1]++} END{for(k in array){print k,array[k] | "sort -k1"}}' Input_file
输出将如下所示。
Item1 2
Item2 2
Item3 1
Item4 1
Item5 1