Como grep múltiplas linhas de um arquivo no linux

3

Eu tenho um arquivo com o conteúdo abaixo.

.
.
hello
.
.
.
world
.
.
hello
.
.
.
.
.
world
.
.

os pontos indicam as outras linhas no arquivo. Aqui o que eu preciso para gerp apenas as linhas olá e mundo. Isso significa que a saída deve algo como abaixo.

hello
world
hello
world

Como conseguir isso?

Obrigado,

    
por Uvais Ibrahim 15.07.2016 / 12:41

2 respostas

5

Usando grep :

grep -E 'hello|world' file

Usando awk :

awk '/hello|world/' file
    
por 15.07.2016 / 12:47
1

Você pode usar grep com a opção -x para corresponder à linha inteira e ao operador Regex (estendido), | , para executar um OR lógico entre os padrões:

grep -xE 'hello|world' file.txt

Se o seu grep não suportar a opção -E , use o Regex básico com% de escape|:

grep -x 'hello\|world' file.txt

Além disso, se você não puder usar a opção -x para corresponder à linha inteira, use operadores Regex:

grep -E '^(hello|world)$' file.txt
    
por 15.07.2016 / 14:47