如何計算第二個值的出現次數,例如:'Rv1408'?我想獲取并計算每行中第二個元素的出現總數。<.br>
檔案.txt:
Rv0729,Rv1408,Rv1408
Rv0162c,Rv0761,Rv1862,Rv3086
Rv2790c,Rv1408
Rv2fd90c,Rv1408
Rv1862,Rv3086
Rvsf62,Rv3086
我試過(不起作用)輸入:
awk ' { tot[$0] } END { for (i in tot) print tot[i],i } ' m.txt | sort | cut --delimiter=',' --fields=1
預期輸出:
total no of occurences:
Rv1408: 3
Rv0761:1
Rv3086: 2
idk為什么即使我輸入fields = 2我也無法獲得第二個元素
uj5u.com熱心網友回復:
您可以通過傳遞 -F 逗號欄位分隔符使其更容易。
像這樣:
awk -F, '{map[$2] } END { for (key in map) { print key, map[key] } }' file.txt
uj5u.com熱心網友回復:
idk為什么即使我輸入fields = 2我也無法獲得第二個元素
print當您向GNU提供超過 1 個引數時,會使用默認為空格的輸出欄位分隔符( )AWK加入該引數,但您告知它應該將其視為分隔符。OFScut,
如果您必須使用awk管道輸出,請cut確保輸出欄位分隔符awk和分隔符cut相同,您基本上有三個選項,
awk 'BEGIN{OFS=","}END{print 11,22,33}' emptyfile.txt | cut --delimiter=',' --fields=2
awk 'END{print 11,22,33}' emptyfile.txt | cut --delimiter=' ' --fields=2
awk 'BEGIN{OFS="\t"}END{print 11,22,33}' emptyfile.txt | cut --fields=2
他們都給出相同的輸出
22
說明:第一個選項是在兩個命令中顯式設定OFS和相同的字符(例如),第二個選項是設定為空格的默認值,第三個選項是設定為TAB字符的默認值。--delimiter,--delimiterOFSOFS--delimiter
警告在大多數情況下,不需要將awk輸出通過管道傳輸到,cut因為任務可能完全在awk.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521138.html
標籤:壳awk嘘
