sed d comando com 2 padrões

1

Meu arquivo.txt contém o seguinte:

abc
123
abcd
1234
abcde
12345

Eu executei o comando sed abaixo:

sed '/^[a-z]/,/[a-z]$/d' alphabet3.txt 

Isso não significa excluir da primeira linha que começa com um alfabeto pela primeira linha que termina com um alfabeto? Então, eu esperava que minha saída fosse:

1234
abcde
12345

Como "abc" começa com um alfabeto e "abcd" termina com um alfabeto. Portanto, 1-3 são excluídos. Mas minha saída real é:

1234

Eu acho que estou claramente perdendo alguma coisa.

    
por Mint.K 31.01.2017 / 03:08

1 resposta

1

De o manual do GNU sed :

  

Um intervalo de endereços corresponde às linhas a partir de onde o primeiro endereço   corresponde e continua até que o segundo endereço corresponda (inclusive).

É o primeiro endereço que realmente importa. O segundo endereço não precisa corresponder, nesse caso, o intervalo cobrirá até o final do arquivo.

Se invertermos seu comando (imprimindo apenas linhas correspondentes em vez de excluí-las), você poderá ver o que acontece:

$ sed -n '/^[a-z]/,/[a-z]$/p' bar
abc
123
abcd
abcde
12345
    
por muru 31.01.2017 / 03:23