Как использовать awk для подсчета количества указанных цифр в определенном столбце
Как я могу посчитать соответствующее значение в определенном столбце?
У меня есть файл:(wm.csv)
Я выполнил команду, чтобы получить целевое значение в определенном столбце: tail -n +497 wm.csv | awk -F"," '$2=="2" {print $3" "$4}'
тогда я получаю следующие выходные данные, которые я хочу:
hit 2
hit 2
hit 2
hit 2
miss
hit 2
hit 2
hit 2
hit 2
hit 2
hit 2
hit 2
incorrect 1
hit 2
hit 2
hit 2
Я хочу посчитать число "2" во втором столбце, чтобы сделать простую математику, например: общее количество цифр в столбце, деленное на общее количество строк. В частности, в этом случае это будет выглядеть так: 14 (четырнадцать "2" во втором столбце) / 16(общее количество строк)
Ниже приведена команда, которую я пробовал, но она не работает:tail -n +497 wm.csv | awk -F"," '$2=="2" {count=0;} { if ($4 == "2") count+=1 } {print $3,$4,$count }'
Спасибо
2 ответа
Принимая опубликованные данные в качестве входного файла
$ awk '$2==2{c++} END{print NR,c,c/NR}' file
16 14 0.875
awk '($0 ~ "hit 2"){count += 1} END{print count, FNR, count/FNR}' sample.csv
14 16 0.875
я использую ~
сравнить всю строку ($0) с совпадением "хит 2", если счетчик увеличен на 1. FNR
это номер файла записей, который является общим номером строки.