grep entradas entre colchetes do arquivo de texto

3

Eu tenho um arquivo com muitas palavras entre colchetes, ex. {test1}, {test2} - como eu iria grep para essas palavras e mostraria uma lista distinta delas?

Exemplo de saída

:

{test1}
{test2}

Eu tentei isso que não funcionou:

grep -o {.*} file.xml  | sort | uniq

UPDATE

Na verdade - isso parece ter funcionado:

grep -oP '{.*?}' file.xml | sort | uniq
    
por user2568737 22.07.2013 / 16:37

1 resposta

4

Existem dois problemas com sua primeira tentativa. {.*} contém caracteres especiais que precisam ser protegidos da expansão pelo shell; Coloque aspas ao redor do padrão. Além disso, {.*} corresponde ao texto mais longo delimitado por chave na linha, portanto, se você tiver uma linha contendo hello {test1} world {test2} howdy , a saída será {test1} world {test2} , porque .* correspondido test1} world {test2 .

O seguinte mostrará apenas o que está entre parênteses.

grep -o -e "{[^}]*}" 

Minha formulação original usava "{. *}", mas com isso o maior suporte encontrado dentro de uma linha, não o menor, seria retornado ...

    
por 22.07.2013 / 17:00

Tags