grep
é um comando Unix / Linux muito comum, pelo menos eu ainda não encontrei nenhuma distro que eu tenha que instalar especificamente grep
(vs dizer egrep
ou outro comando de filtro).
pegue a entrada canalizada, filtre certas strings e grave o resto na saída padrão.
Para usá-lo assim para filtrá-lo, você poderia fazer o seguinte (assumindo que você está usando cat
para imprimir um arquivo para saída padrão)
cat "some_file.txt" | grep -v "text to omit"
Além disso, grep
também funciona em arquivos também, então o comando acima poderia ser escrito assim:
grep -v "text to omit" "some_file.txt"
o -v
bandeira diz grep
para imprimir tudo exceto o texto especificado. Se você quiser uma pesquisa com diferenciação de maiúsculas e minúsculas, precisará especificar -i
bandeira.
não é um item por linha, são todos os itens na mesma linha, separados por espaços e não por linhas novas.
Para isso, você pode adicionar um loop for para iterar as palavras e ainda utilizar o grep para obter o que precisa, por exemplo:
for word in "hello there how" are you how "am i today"; do echo $word; done | grep -v "how"
A saída para isso seria:
are
you
am i today
E para ter saída em uma única linha você pode usar o tr
comando para traduzir o \n
para um espaço:
for word in "hello there how" are you how "am i today"; do echo $word; done | grep -v how | tr '\n' ' '
Aqui a saída seria:
are you am i today
A primeira parte de for word in
é o script de shell for loop
. O link fornecido é específico para BASH
mas a sintaxe é bem parecida entre as outras shells (pelo menos para CSH
, KSH
e ASH
), então você pode ter que ajustar para que a sintaxe corresponda ao seu shell específico.
Espero que isso possa ajudar.
tr
.. por exemplo:for word in blah blah blah; do echo $word; done | grep -v omit | tr '\n' ' '