Shell-Script
通過不同文件中的公共字元串求和
我有一個文件
file1
,其中包含使用者在文件中出現的次數,如下所示:4 userC 2 userA 1 userB
我還有另一個
file2
包含使用者和其他資訊的文件,例如:userC, degree2 userA, degree1 userB, degree2
我想要一個輸出,它顯示使用者出現的次數,每個學位:
5 degree2 2 degree1
純
awk
:$ awk -F'[, ]' 'NR==FNR{n[$2]=$1;next}{m[$3]+=n[$1]} END{for(i in m){print i " " m[i]}}' \ file1 file2 degree1 2 degree2 5
或者你可以把它放到這樣的腳本中:
#!/usr/bin/awk -f BEGIN { FS="[, ]" } { if (NR == FNR) { n[$2] = $1; next; } else { m[$3] += n[$1]; } } END { for (i in m) { print i " " m[i]; } }
首先將欄位分隔符設置為逗號和空格(即
BEGIN
塊或-F
命令行選項。然後,在解析第一個文件(
FNR == NR
習語)時,將使用者的連接數放入由使用者名索引的數組中。解析以下文件時,將每個使用者的連接數添加到使用者組索引的數組中。最後(
END
塊)掃描整個數組並列印鍵值對。