Grep uma linha que começa e termina com um caractere pré-definido

1

Eu estou tentando buscar uma linha de um arquivo file.txt que se parece com isso:

>This is line 1.</li>
>This is line 2.</li>
>This is line 3.</li>
>This is line 4.</li>

Eu preciso buscar o conteúdo que começa com > e termina em </li> , então a saída será This is line 1. This is line 2. e assim por diante. Eu olhei para isso no fórum, mas não encontrei solução. Esta solução também não funcionou.

Eu finalmente tenho que buscar algumas linhas de uma página da web. Então primeiro eu vou curl webpage e então uso o comando grep para grep aquela linha que começa com > e termina em </li> .

Obrigado!

    
por S Andrew 12.08.2017 / 06:46

2 respostas

4

Isso deve ser suficiente:

grep '^>.*</li>$' input-file

Os ^ e $ garantem que essas partes estejam ancoradas no início e no final das linhas, respectivamente.

Você também pode fazer:

grep -x '>.*</li>' input-file

-x procura uma correspondência exata: a linha inteira deve corresponder ao padrão (o que significa que ^ e $ estão agrupados em torno do padrão).

    
por Olorin 12.08.2017 / 07:05
0

Este é o arquivo de entrada:

$ cat /tmp/tmp.txt
>This is line 1.</li>
invalid line 1
>This is line 2.</li>
>This is line 3.</li>
invalid line 2

>This is line 4.</li>
last invalid line

Usando grep e awk para extrair as sequências desejadas:

$ cat /tmp/tmp.txt | grep -E '>*</li>' | awk -F\> '{ print $2 }' | awk -F\< '{ print $1 }'
This is line 1.
This is line 2.
This is line 3.
This is line 4.
    
por boardrider 14.08.2017 / 00:49