2016-09-05 3 views
2

У меня есть файл a.txt, длина которого составляет 100 строк.Трубопровод 2 команды grep в wc

grep rake a.txt | wc #returns 10 lines 

grep -v rake a.txt | wc #returns 90 lines 

grep Rake a.txt | wc #returns 3 lines 

один из этих 100 строк имеет и другое, но я хочу линии с только «Грабли». Я пробовал grep Rake a.txt | grep -v rake a.txt | wc возвращает 90 строк?

Я хочу найти все 3 строки с помощью «Грабли», направить его на grep, найти, если какая-либо из этих трех строк включает «Рейк», но не «грабли», а затем используйте wc, чтобы подсчитать строки, которые делают. Я мог бы использовать redirect для создания другого файла, а затем grep -v, что новый файл, но это не моя цель. Я уверен, что это что-то простое, но как я могу исправить свою команду?

+0

Здесь будет полезен некоторый пример ввода и ожидаемый выход. –

ответ

2

Я пробовал grep Rake a.txt | grep -v rake a.txt | wc возвращает 90 строк?

Пункт трубопровода состоит в том, что вывод команды подает следующий. Вместо этого вы прокладываете трубопровод, а затем говорите grep -v rake a.txt, что делает предыдущую команду лишней.

Так что вам просто нужно трубы нормально:

grep Rake a.txt | grep -v rake | wc 
#       ^
#        removed a.txt 

Вы также можете использовать awk и сказать ему, чтобы считать строки, содержащие Rake, не грабли. Наконец, распечатайте счетчик:

awk '/Rake/ && !/rake/ {count++} END {print count+0}' a.txt 
+0

Мне нужно будет изучить awk. Я очень новичок в использовании терминала и в настоящее время изучаю основы через некоторые онлайн-ресурсы. Спасибо за ответ, хотя! – Aaron

+0

@ Аарон приветствуется :) Добро пожаловать также в мир UNIX, вы обнаружите много интересного. – fedorqui

+1

Почему бы вам не использовать grep -c вместо трубопровода в wc? – VM17

2

Не дают файла аргумент ко второму grep, т.е .:

grep Rake a.txt | grep -v rake | wc -l 

с файлом аргумента, grep будет искать файл снова. Без него он просто отфильтрует входные данные.

+0

Это приятно знать. Онлайн-уроки, которые я сейчас принимаю, любезно исключили этот забавный факт при введении grep & piping – Aaron

Смежные вопросы