從這個文件https://1drv.ms/t/s!AjlMpzDMn2h7hWKyBGBxdhHXwjm8
我需要取得由數字 1-6 組成的第 3 列,並將這些數字輸出為 1-sparkling、2-fine 等單詞,而不會更改檔案。
此外,還必須對這些進行計數,以便我可以輸出每種類型有多少個以及相應的名稱。
我嘗試了很多不同類型的awk
程式碼,但一直無法得到它。目前我有
awk -F: '$3==1, ((counter++)) {print counter1}' wine.txt
這根本沒有給我任何輸出。
答案1
awk
解決方案:
假設關係圖:
(起泡=1 優質=2 加強=3 甜=4 白=5 紅=6)
awk -F':' 'BEGIN{ split("sparkling fine fortified sweet white red", words, " ") }
$3 in words{ c[$3]++ }
END{ for(i in words) print words[i]"="c[i] }' file
split("sparkling fine fortified sweet white red", words, " ")
words
-透過分隔符號(空格)將包含關鍵字的字串拆分為數組," "
以便該數組將使用以單字作為值的連續數字進行索引(即words[1]="sparkling" words[2]="fine" ...
)$3 in words{ c[$3]++ }
- 檢查第三個欄位值(包含數字)是否出現在陣列words
索引中,如果是的話 - count 與c[$3]++
輸出:
sparkling=
fine=15
fortified=28
sweet=10
white=23
red=24