Terminal OS X - Localizar texto em arquivos começando com variável

1

Eu preciso pesquisar em uma pasta de arquivos e copiar todo o texto que começa com uma variável.

Então, por exemplo:

Os arquivos A.txt, B.txt, C.txt e D.txt contêm as strings "Hello1", "Hello2", "Hello3" e "Hello4", respectivamente. Eu preciso ser capaz de procurar por todas as palavras que começam com "Olá" e gerar o resultado.

Neste caso particular, A.txt, B.txt, C.txt e D.txt seriam pesquisados e a saída seria

Hello1
Hello2
Hello3
Hello4

Eu olhei em volta e encontrei o seguinte que me permite exportar todos os arquivos que contêm o texto, mas não sei como ou se isso pode ser adaptado para o que eu preciso.

grep -l Hello *.txt
    
por Brandon Schlenker 03.07.2013 / 19:29

2 respostas

3

Você provavelmente deseja grep -ohw 'Hello[0-9]*' *.txt .

  • -o apenas mostra a parte correspondente da linha
  • -h faz grep suprimir saída de nome de arquivo
  • -w faz com que grep procure somente palavras inteiras, portanto, um Hello1Hello2 não seria correspondido (seria correspondido duas vezes sem -w )

Você precisa ajustar o padrão, pois um literal Hello corresponderá apenas a Hello e, subsequentemente, apenas produzirá isso. Como você deseja corresponder Hello1 a Hello5 (ou mesmo Hello123 ), precisará de vários dígitos ( [0-9]* ).

Não se esqueça de citar o padrão para que o * não seja expandido pelo shell.

    
por 03.07.2013 / 19:39
0

Isso procura palavras que começam com uma variável.

var=Hello
grep -ho "\<${var}[^[:blank:]]*" *.txt

O \< do grep é a âncora do "início da palavra".

Suponho que suas palavras sejam delimitadas em branco, portanto, o restante da palavra não é caracteres em branco. Você pode alterar isso para números ( [0-9]* ) ou "caracteres de palavra" semelhantes a perl ( [[:alnum:]_]* ) facilmente.

    
por 03.07.2013 / 20:58