Correspondência de padrões e comparação

0

Eu tenho um arquivo com estas frases

Today is a holiday
May I go tomorrow 
No Holiday

Destes, preciso encontrar No Holiday e preciso compará-lo com outra string, como grep "No Holiday"!="Holiday" .

Eu não sei a consulta correta. Estou apenas dando uma lógica do que preciso.

    
por Ammu 08.10.2017 / 11:06

1 resposta

1

Selecionando a última linha do arquivo e comparando-a com a string Holiday :

holiday_line=$( sed -n '$p' file.txt )
if [ "$holiday_line" = 'Holiday' ]; then
   echo 'The holiday line says "Holiday"'
else
   echo 'The holiday line does not say just "Holiday"'
fi

Ou, se você quiser a terceira linha, altere sed -n '$p' para sed -n '3p' . $p significa "imprimir a última linha", enquanto 3p significa "imprimir a terceira linha".

Se você deseja que a primeira linha encontrada contenha a string Holiday , não importa onde esteja no arquivo, use sed -n '/Holiday/{p;q;}' . A expressão /Holiday/{p;q;} significa imprimir a linha que corresponde ao padrão Holiday e, em seguida, sair.

Usando grep conforme solicitado nos comentários:

if grep -q -wF 'No Holiday' file.txt; then
    echo 'The file contains the string "No Holiday"'
else
    echo '"No Holiday" was not found in the file'
fi

Isso é semelhante a minha resposta à sua pergunta anterior .

    
por 08.10.2017 / 11:31

Tags