sed extrair com várias opções no padrão final

1

Eu recebo alguma saída de um comando, tenho que extrair o texto entre dois padrões da saída. O padrão de partida é fixo. Mas o formato final pode ser um dos dois (digamos word2-1 e word2-2).

Existe alguma maneira de especificar isso em um único comando sed ?

Eu tentei

sed -n "/Word1/,/(word2-1|word2-2)/p"
sed -n "/Word1/,/word2-1|word2-2/p"
sed -n "/Word1/,/word2-1\|word2-2/p"
sed -n "/Word1/,/[word2-1|word2-2]/p"
    
por Ram 04.03.2013 / 09:22

2 respostas

1

O regexp que corresponde a word2-1 e word2-2 e nada mais é word2-[12] . Se o sufixo tiver mais de um caractere, use word2-\(first\|second\) ou o que for.

Seu terceiro regexp corresponde às mesmas strings, apenas com mais repetição.

    
por 04.03.2013 / 18:44
0

Sua terceira opção funciona, apenas extraindo para o primeiro jogo como você declarou no seu comentário:

$ cat > file << 'EOF'
> foo
> bar
> Word1
> foo
> bar
> word2-2
> foo
> bar
> word2-1
> EOF
$ sed -n "/Word1/,/word2-1\|word2-2/p" file
Word1
foo
bar
word2-2
    
por 04.03.2013 / 09:29

Tags