2015-02-01 2 views
1

Что такое команда оболочки для grep нескольких строк? Для ввода текста [вывод команды] мне нужно проверить, есть ли несколько строк или нет. Вернет true, если все строки присутствуют, иначе false (операция AND).Что такое команда оболочки для grep нескольких строк?

Example1: Input: Что такое команда оболочки для grep нескольких строк? Для ввода текста [вывод команды] мне нужно проверить, есть ли несколько строк или нет. Вернет true, если все строки присутствуют, иначе false (операция AND).

Поиск строк "необходимости" "проверить" "несколько" "И"

Выход: Правда

Exapmle 2: Что такое командная оболочка для Grep несколько строк? Для ввода текста [вывод команды] мне нужно проверить, есть ли несколько строк или нет. Вернется справедливо, если все строки присутствуют, иначе ложь

Поиск строки «необходимости» «проверка» «мало», «И»

Выход: Ложные

+1

Не могли бы вы дать пояснения, предоставив вам пример? – SMA

+0

Я хочу записать файл журнала и хочу проверить, есть ли все необходимые строки. Пример: Я хочу проверить, что («время», «слово», «яблоко» «отлично») все строки присутствуют в журнале. –

+1

Вы имеете в виду все слова в вашем файле? Вы имеете в виду все слова в строке? – SMA

ответ

0

Если вы имеете в виду, «все цели поиска присутствуют где- в файле», то вы можете сделать

awk '/need/{n=1}/check/{c=1}/few/{f=1}/AND/{A=1} 
     END{exit (!(n&&c&&f&&A))}' file2search 

эхо $? вернет 0, когда все будут найдены в файле, и 1, если все или все пропадут без вести.

Если вы имеете в виду «все цели поиска на одной и той же линии», то вы можете сделать

awk '{ if ($0 ~ /need/ && $0 ~ /check/ && $0 ~ /few/ && $0 ~ /AND/) lineMatched=1 } 
     END { if (lineMatched) exit 0 ; else exit 1 }' file2Search 

эхо $? будет работать одинаково для этого.

IHTH

0

Вы можете использовать что-то вроде

$cat test.txt 
name1 is a boy 
name2 is a girl 
name3 is a good person 
name4 is unknown to me 
$ grep -q "name1" test.txt && grep -q "name2" test.txt 
$ echo $? 
0 
$ grep -q "name1" test.txt && grep -q "helloWorld" test.txt 
$ echo $? 
1 

С помощью grep вы ищите каждый узор. Если какой-либо из них не сможет найти шаблон в файле, он выйдет с 1 статусом. Поэтому в моем втором примере первый grep успешно завершает работу и возвращает 0, а второй возвращает 1, и, следовательно, когда вы запрашиваете статус выхода, он говорит 1. С этим вы можете проверить, были ли вы найдены все шаблоны в файле или нет.

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