Como faço para varrer várias palavras-chave de um arquivo?

2

Desejo usar a função grep do Unix para extrair várias linhas (com palavras-chave diferentes) de um arquivo em um comando linha.

Por exemplo, eu tenho algo como:

doc-A1-151
file-A2-15646
table-A3-1654
file-B1-15654
doc-B2-15654
table-B3-13546
file-C1-164654
doc-C2-16354
table-C3-13565

E eu quero uma subversão do arquivo apenas com as linhas A1, B3 e C2.

Como faço isso?

    
por Kirt 06.10.2012 / 07:39

2 respostas

5

O grep permite que você use expressões regulares para combinar padrões dentro do arquivo usando o -E flag, ou você pode usar o comando egrep que é equivalente a grep -E :

grep -E 'A1|B3|C2' filename

ou

egrep 'A1|B3|C2' filename

A barra vertical, | , é o operador OR que significa a sequência de correspondência A1 ou B3 ou C2.

A sintaxe da expressão regular varia de ferramenta para ferramenta, mas geralmente a sintaxe é a mesma. Aqui está um chicote de testes de regex para Ruby que eu uso com frequência para testar e criar expressões regulares: link

No entanto, qualquer introdução a expressões regulares deve ser precedida por um aviso de que eles são limitados em suas capacidades, e o ditado é:

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

    
por 06.10.2012 / 08:03
5

Encontrei. Coloque os termos em um arquivo de texto separados por novas linhas e insira-os como o padrão para corresponder ao sinal -f .

pattern_file.txt:

A1
B3
C2

Comando:

grep -f pattern_file.txt input_file.txt
    
por 06.10.2012 / 08:13

Tags