[ad_1]
grep
é um utilitário Linux comumente usado para pesquisar o conteúdo do arquivo ou qualquer entrada passada para ele. Ao pesquisar vários arquivos, é útil exibir o nome do arquivo e os números de linha, especialmente quando usado para automatizar scripts de shell.
mostrar nomes de arquivos com grep
Por padrão, se você passar vários arquivos para grep
será mostrado filename:
antes da linha correspondente para maior clareza. Na verdade, você pode desabilitar esse comportamento com o -h
flag, que nunca exibirá nomes de arquivos:
No entanto, se você passar apenas um arquivo para grep
, ele não exibirá nomes de arquivos por padrão. Isso pode ser um problema ao automatizar com scripts de shell, pois você pode não saber quantos arquivos estão em um diretório e pode interromper a automação dependendo do nome do arquivo que está lá.
a a solução simples é usar maiúsculas -H
bandeiraque faz o contrário de -h
e ele sempre disparará nomes de arquivos, não importa o que aconteça, mesmo com apenas um arquivo passado como entrada.
grep -H "foo" file
a -H
sinalizador tem outro efeito inesperado, mas útil: quando combinado com a entrada de stdin
como tubos unix, ele imprimirá (standard input):
em vez do nome do arquivo.
Mostrar números de linha com grep
Você também pode usá-lo em conjunto com o -n
flag para obter o número da linha:
grep -Hn "foo"
Um hack compatível com POSIX
a -H
bandeira acesa grep
não é compatível com POSIX e não está disponível em alguns sistemas operacionais baseados em Unix mais obscuros. Felizmente, há um truque que você pode usar, passando /dev/null
como uma segunda entrada de arquivo falsa para grep
que o leva a pensar que existem vários arquivos:
[ad_2]