Как использовать 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 это номер файла записей, который является общим номером строки.

Другие вопросы по тегам