Extrai a primeira palavra após o padrão que inclui '[…]'

3

Eu tenho um problema ao tentar extrair a primeira palavra depois que grep corresponde ao meu padrão.

Deixe-me mostrar um exemplo:

cat test.txt
[profile dev]
xxx
xxx
[profile prod]
xxx
xxx

agora eu quero extrair a palavra depois de 'perfil' e, eventualmente, atribuí-la a uma variável

Eu tentei com grep e awk , mas parece que não consigo extrair apenas a palavra

grep -oP '(?<=profile\s/)\w+' /test.txt não retorna nada também com awk :

awk '/^profile / {print $1}' /text.txt 

talvez seja por causa dos colchetes ou eu não sei, você pode me ajudar com uma sugestão?

    
por hoisu 01.04.2015 / 09:09

1 resposta

3

Seu padrão Awk está falhando porque a palavra "profile" não inicia o registro, [profile faz ...

awk '/^\[profile/ {gsub(/]/,""); print $2}' test.txt
dev
prod

Outra abordagem seria carregar uma matriz usando split :

awk -F'[][]' '/profile/ {p=split($2,profiles," "); print profiles[2]}' test.txt
dev
prod
    
por 01.04.2015 / 09:17