2013-11-19 3 views
2

Я хочу найти строку (а не шаблон в данный момент), напечатать только один раз, когда согласованная строка и количество совпадающих строк.Grep из нескольких команд

здравый смысл говорит, что я должен сделать это:

grep -o "APPLICATION=MULTIRING" filename.csv | grep -c "APPLICATION=MULTIRING" 

или это:

grep -o "APPLICATION=MULTIRING" filename.csv | grep -c "" 

, но не работает. Приближается -c убивает любую другую команду .. почему?

+1

Это работает для меня. Кроме того, 'grep -o' дает один результат для каждой строки. Следовательно, вместо 'grep -c' вы можете использовать' wc -l' для подсчета количества совпадений. – fedorqui

+0

grep -o "APPLICATION = MULTIRING" filename.csv | wc -l печатает только количество появлений, а не «APPLICATION = MULTIRING». все еще не может понять, почему. – user3008826

ответ

0

В реальном выражении, что вы положили в говорит:

«Посмотрите на„APPLICATION = мультикольца“в filename.csv, а затем просматривать эти результаты и подсчет мест где»

Попробуйте Grep - o "ПРИМЕНЕНИЕ-МНОГОКРАТНО" в filename.csv | wc -l

Который, если я правильно помню, будет подсчитывать выводимые события.

grep -c не убивает другие команды, но в этом случае команда на команду означает, что она будет действовать как фильтр.

+0

Ах, пока я печатал это, @fedorqui, кажется, сказал почти то же самое. –

+0

grep -o "APPLICATION = MULTIRING" filename.csv | wc -l печатает только количество появлений, а не «APPLICATION = MULTIRING». все еще не может понять, почему. – user3008826

0

Что-то вроде этого? - Определенно дешевый трюк

awk '/APPLICATION=MULTIRING/ {count++} END {print "APPLICATION=MULTIRING", count }' filename.csv 
Смежные вопросы