Como modificar grep saída:obter cada resultado em cada linha
Pergunta
Eu estou usando o grep para pesquisar um padrão através de um arquivo contido em um var
O código aqui:
result=`grep "$pattern" $file`
echo $result
Resultado:A) somewords B)somelines C)somenumbers
resultado da impressão em 1 linha.Eu gostaria de ter resultados um para a linha um
Como:
A) somewords
B) somelines
C) somenumbers
Como posso?
Obrigado
Solução
Apenas citar o $result
variável e as quebras de linha serão preservadas:
result=$(grep "$pattern" $file)
echo "$result"
A razão pela qual isso funciona é que quando você coloca algo em aspas duplas no bash, tudo dentro dessas citações é tratada como uma única palavra.Isso significa que ele não será sujeito a palavra de divisão.Veja também: http://mywiki.wooledge.org/WordSplitting
Efetivamente, quando você usa $result
, ele é expandido para isso (porque as quebras de linha são tratados como delimitadores):
echo A) somewords B) somelines C) somenumbers
Quando você usa "$result"
e evitar a palavra de divisão, torna-se expandido para isso:
echo "A) somewords
B) somelines
C) somenumbers"
Nota adicional:usando $(...)
em vez de aspas para traz melhora a legibilidade e também é mais portátil.