Manipulação de texto: extrair tudo entre parênteses

3

Eu tenho um arquivo de texto em que cada linha está em um formato semelhante a este:

%#&#%#    [Dinero]    / Money / 
!#@%$@    [Dia]     / Day /
$%&$^#@ [Perro]   / Dog / 

Eu estou olhando para extrair as palavras dentro dos colchetes, ou seja. Ola, Dinero, Perro, etc, e salve tudo em um novo arquivo de texto linha por linha. Essencialmente, estou procurando omitir / excluir / apagar todas as palavras, letras, caracteres especiais e qualquer outra coisa fora dos colchetes, incluindo os próprios colchetes.

    
por Billy 04.07.2016 / 19:19

2 respostas

4

com a ajuda de awk ,

$ awk -F'[][]' '{print $2}' < input
Dinero
Dia
Perro

Usando grep ,

grep -oP '\[\K[^\]]+' input

\K significa que o recurso procura regex é avançado. Mais precisamente, trata-se de uma afirmação positiva de "olhar para trás"

se você não tiver a opção -P , poderá fazer isso com perl :

perl -lne '/\[\K[^\]]+/ and print $&' input

use a opção -i para editar o arquivo.

Ou simplesmente você pode usar cut como sugerido por @juliepelletier,

cut -d"[" -f2 < input | cut -d"]" -f1
    
por 04.07.2016 / 19:29
2
sed 's/^.*\[//;s/\].*$//' /path/to/input > /path/to/output
    
por 04.07.2016 / 19:21