Categories
Linux

Sed – como apagar linhas?

sed é uma ferramenta GNU para tratamento de textos. É possível fazer operações sobre arquivos textuais e saídas de outros programas. Para usar o sed é recomendável saber um pouco de expressões regulares para encontrar padrões, mas é possível usá-lo com simples strings.

Para as experiências a seguir, será usado um arquivo texto com alguns nomes de pessoas, chamada nomes.txt, que contém dois nomes por linha. As alterações feitas pelo sed não persistem no arquivo sem a opção -i, então o mesmo arquivo será usado para todos os comandos.

[~] cat > nomes.txt <<- DONE
Guilherme Sofia
Gustavo Maria
Lucas Beatriz
Enzo Camila
Vinicius Amanda
Joao Bruna
Eduardo Isabela
Bruno Ana
DONE

 Apagar linhas

Em um script para o sed a letra d significa a deleção de uma linha.

Apagar a linha número 2

[~] sed -e '2d' nomes.txt
Guilherme Sofia
Lucas Beatriz
Enzo Camila
Vinicius Amanda
Joao Bruna
Eduardo Isabela
Bruno Ana

Apagar da linha 1 até a linha 3 (inclusive)

[~] sed -e '1,3d' nomes.txt
Enzo Camila
Vinicius Amanda
Joao Bruna
Eduardo Isabela
Bruno Ana

Apagar da linha 3 (inclusive) até o fim do arquivo

[~] sed -e '3,$ d' nomes.txt
Guilherme Sofia
Gustavo Maria

Apagar linhas com o primeiro nome terminando em o

Padrões no sed devem ficar entre duas barras /.

[~] sed -e '/^\w\w*o /d' nomes.txt
Guilherme Sofia
Lucas Beatriz
Vinicius Amanda

Apagar da linha que começa com Lucas até a linha que termina com Amanda

[~] sed -e '/^Lucas/,/Amanda$/d' nomes.txt
Guilherme Sofia
Gustavo Maria
Joao Bruna
Eduardo Isabela
Bruno Ana

Apagar a linha que termina com Beatriz e também a próxima linha

É possível realizar mais de um comando para o mesmo padrão que o sed encontrou no texto de entrada. Os comandos ficam entre chaves. O comando N seleciona a linha seguinte junto a linha do padrão encontrado para serem apagadas pelo comando d.

[~] sed -e '/Beatriz$/{ N; d }' nomes.txt
Guilherme Sofia
Gustavo Maria
Vinicius Amanda
Joao Bruna
Eduardo Isabela
Bruno Ana

Referências