Existem muitas maneiras de fazer isso, dependendo de suas necessidades.
-
Basta imprimir todas as linhas que contenham a palavra-chave
test
:grep test file.txt
-
O mesmo, mas para muitas palavras-chave. Crie um arquivo que tenha todas as palavras-chave, uma por linha e execute
grep -f keywords.txt file.txt
-
Processar um arquivo linha por linha, sair se a linha for encontrada
while read line; do echo $line | grep test && break; done < file.txt
-
Saia com o status 1 se a linha corresponder. Infelizmente, se bem me lembro (não tenho 100% de certeza), bash só permite que você defina valores de retorno em funções. Então, para obter um status de saída, você precisa usar outra coisa. Perl por exemplo:
perl -ne '/test/ && exit(1)' file.txt
-
Embora não seja possível definir um valor de saída, você ainda pode fazer algo semelhante com o bash. O valor de saída da última execução de comando é sempre salvo como
$?
no bash, o que significa que você pode testar o valor de$?
e agir de acordo:while read line; do let c++; echo $line | grep test >/dev/null; if [[ $? == 0 ]] ; then echo Match for line $c : $line; else echo No match for line $c; fi done < file.txt