2015-12-01 2 views
1

У меня есть файл, в котором я хочу вывести все строки, содержащие определенную фразу, но не другую фразу для другого файла. Например здесь приведен пример файла:Как искать файл для строк, содержащих определенную строку, но не определенную строку?

QWERT catsanddogs werwer
SDFG catsandlions sdfggf
dfhgsdg catsandtigers dhjtjye
tqvtw erytwy weyyq
........

Поэтому я хочу перенаправить все линии, которые имеют кошек, но не линии, которые имеют catsanddogs в другой файл.

Может ли кто-нибудь объяснить, как я могу это сделать?

ответ

1

grep - это инструмент, который может фильтровать входные данные. В основном вы можете описать, что вы хотите поймать (с regexp - regexp описывает набор слов) и решить, хотите ли вы включать или исключать строку (grep работает в строках текста) на выходе.

grep -v может быть вашим другом:

cat myfile | grep cats | grep -v catsandlions > resultfile 

Вы первый фильтр каждая строка, которая содержит cats, а затем из этого исключить все, что содержит catsandlions.

Вы также можете сделать обратное: исключить catandlions первым и включить cats.