Sed - Suprimir uma ou mais linhas de um arquivo

Julho 2017


Como suprimir uma (ou mais) linha (s) de um arquivo

Sintaxe

sed '{[/]<n>|<cadeia>|<regex>[/]}d' <nome_arquivo>  
sed '{[/]<adr1>[,<adr2>][/]d' <nome_arquivo>



/.../ = delimitadores
n = o n° de linhas
cadeia = a cadeia contida na linha
regex = a expressão regular correspondente ao motivo buscado
adr = o endereço de uma linha (número ou motivo)
d = delete (apagar)

Exemplos

Supressão da 3a linha
sed '3d' meu_arquivo.txt

Supressão da linha que contém a cadeia "awk"
sed '/awk/d' meu_arquivo.txt

Supressão da última linha
sed '$d' meu_arquivo.txt

Supressão de todas as linhas vazias
sed '/^$/d' meu_arquivo.txt sed '/./!d' meu_arquivo.txt

Supressão da linha "jogada" por uma expressão regular (aqui se elimina aquela que contém caracteres numéricos (ao menos 1 número) situados no fim da linha )
sed '/[0-9/][0-9]*$/d' meu_arquivo.txt

Supressão do intervalo compreendido entre as linhas 7 e 9
sed '7,9d' meu_arquivo.txt

A mesma coisa mas substituindo o endereço pelos "motivos"
sed '/-Inicio/,/-Fim/do  meu_arquivo.txt

Nota

Os exemplos acima só modificam a exibição do arquivo (saída standard 1 = a tela ).
Para modificações permanentes nas antigas versões (< 4) utilize um arquivo temporário, para GNU Sed utilize o parâmetro "-i[suffixe]" (--in-place[=sufixo]), como no exemplo seguinte:
sed -i".bak" '3d' meu_arquivo.txt
que terá como efeito, não produzir nenhuma exibição a saída standard, modifique o arquivo original meu_arquivo.txt ao suprimir a 3ª linha e criar um arquivo de backup nomeado meu_arquivo.txt.bak.

---------------------------------------------------

Arquivo de referência a utilizar para os exemplos (meu_arquivo.txt).

<Introdução:
Isto é um exemplo de arquivo para se familiarizar com o filtro Sed.

Apresentação:
-Início-
Sed é assim um editor de fluxo (Stream Editor), saída do editor de texto "ed", muito difundido nos sistemas Unix.
-Fim-

Utilização:
O comando o mais frequente do filtro Sed é sem dúvidas o comando de substituição, que serve para substituir em cada linha, a primeira ocorrência de uma cadeia1 por uma cadeia2. Para uma substituição de todas as concorrências encontradas, de cada linha, é preciso utilizar o parâmetro g (global).

Conclusão:
O filtro Sed é sem dúvidas um dos comandos mais usados em associação com outros comandos como GREP ou AWK para a escrita de scripts shell. O conhecimento e o domínio das expressões regulares é um a mais.

Veja também

Artigo original publicado por . Tradução feita por ninha25. Última modificação: 24 de junho de 2016 às 06:15 por ninha25.
Este documento, intitulado 'Sed - Suprimir uma ou mais linhas de um arquivo ', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.