Sample.csv
DSN1,abc,FAILURE,12,24,45
DSN1,def,FAILURE,12,78,65
DSN1,abc,FAILURE,12,24,45
DSN1,abc,FAILURE,12,24,45
DSN1,abc,FAILURE,12,24,45
DSN1,def,FAILURE,12,78,65
DSN1,abc,FAILURE,12,24,45
мне нужно количество сбоев в вышеупомянутом sample.csv с ответом как
abc 5
def 2
но я не упомянул abc / def в скрипте. потому что я дал пример сценария в моем случае, многие из строк, таких как abc, есть, поэтому мне нужна эта строка и считать с ошибкой.
пожалуйста, предложите мне
заранее спасибо
Ответы:
Простое решение - использовать следующую трубу:
grep
будет извлекать строки сFAILURE
в третьем столбцеcut
извлечет столбец (,
номер столбца разделителя2
)sort
отсортирует извлеченный столбец (одинаковые значения будут рядом друг с другом.)uniq
удалит повторяющиеся значения,-c
опция покажет количество каждого уникального значенияВы также можете вставить другие фильтры в трубу по мере необходимости. (например,
grep
в начале).источник
Комментарий Рики таков, как я это сделаю, но если вам нужно решение, специфичное для grep, вы можете сделать следующее:
это выведет ожидаемое:
Обновить
Если вы не хотите включать ключи поиска в цикл for, я не вижу, как это сделать просто с помощью grep.
Вы можете сделать это с помощью awk.
Объяснение:
источник
FAILURE
качестве условия для подсчета, например:$3 == "FAILURE" { a[$2]++ } ...
.пожалуйста, найдите то же самое:
Спасибо за ваши ответы :)
источник
FAILURE
не появляется во втором столбце в вашем примере. (grep
может быть в начале трубы) Вы также должны добавить некоторые пояснения.