2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超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
排序是隨機(jī)的,
它不會打印AA->CC = 1兩次;)
并且它不會打印空關(guān)系CC->BB = 0

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超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
如果您希望對輸出進(jìn)行排序,而不是與 awk 默認(rèn)值相關(guān)的實(shí)現(xiàn),并且您使用的是 GNU awk,請使用PROCINFO["sorted_in"]="@val_num_desc". 如果沒有,請刪除該行并將輸出通過管道傳輸?shù)絪ort -t= -k2n
添加回答
舉報