2 回答
TA贡献1804条经验 获得超7个赞
像这样的东西可能对你来说就足够了:
$ awk 'NR > 1 && prev != $1 { sum[prev"->"$1]++ }
{ prev = $1 }
END { for (a in sum) { print a" = "sum[a] } }
' input.txt
AA->CC = 1
BB->AA = 2
AA->BB = 3
BB->CC = 1
CC->AA = 2
排序是随机的,
它不会打印AA->CC = 1两次;)
并且它不会打印空关系CC->BB = 0
TA贡献1765条经验 获得超5个赞
$ awk -v OFS="=" ' # set for one single use
{
if(FNR>1 && p!=$0) # exclude unwanted
a[p "->" $0]++ # count
p=$0 # save $0 for next round
}
END { # in the end
PROCINFO["sorted_in"]="@val_num_desc" # ordering in GNU awk
for(i in a) # We loop
print i,a[i] # and count
}' file
输出:
AA->BB=3
BB->AA=2
CC->AA=2
AA->CC=1
BB->CC=1
如果您希望对输出进行排序,而不是与 awk 默认值相关的实现,并且您使用的是 GNU awk,请使用PROCINFO["sorted_in"]="@val_num_desc". 如果没有,请删除该行并将输出通过管道传输到sort -t= -k2n
添加回答
举报