1
Obrigado

Algumas palavras de agradecimento nunca são demais.

Sed - Truques e dicas

O comando SED (Stream Editor) é uma ferramenta do Linux utilizada para modificar as linhas de um arquivo aplicando uma série de comandos específicos. Nesse artigo, mostramos algumas das dicas de uso desse importante utilitário.

Nos sistemas baseados em Linux, o SED é instalado por padrão. Entretanto, ele é suportado por todos os sistemas operacionais. Muitas tarefas complexas podem ser executadas com apenas algumas linhas de script SED. Vale a pena então conhecer as dicas a seguir.

Substituição

Substituir 'foo' por 'bar' em todas as linhas:

  • Somente na primeira ocorrência
    • sed 's/foo/bar/'
  • Somente na terceira ocorrência
    • sed 's/foo/bar/3'
  • Em todas as ocorrências
    • sed 's/foo/bar/g'
  • Somente na penúltima ocorrência
    • sed 's/\(.*\)foo\(.*foo\)/\1bar\2/'
  • Somente na última ocorrência
    • sed 's/\(.*\)foo/\1bar/'
  • Substituir 'foo' por 'bar' somente nas linhas que contêm 'plop'
    • sed '/plop/ s/foo/bar/g'
  • Substituir 'foo' por 'bar' exceto nas linhas que contêm 'plop'
    • sed '/plop/! s/foo/bar/g'
  • Substituir 'Foo' ou 'foo' por 'bar' em todas as linhas
    • sed 's/[Ff]oo/bar/g'
  • Substituir 'azul', 'branco' ou 'vermelho' por 'verde'
    • sed 's/azul\|branco\|vermelho/verde/g'

Visualização

  • A primeira linha (head -1)
    • sed q
  • As cinco primeiras linhas (head -5)
    • sed '5q'
    • sed '1,5!d'
  • A última linha (tail -1)
    • sed -n '$p'
    • sed '$!d"
  • As cinco últimas linhas (tail -5)
    • sed -e :a -e '$q;N;6,$D;ba'
  • As duas últimas linhas (tail -2)
    • sed '$!N;$!D'
  • Somente linhas que possuem um determinado padrão ou expressão regular
    • sed -n '/padrão/p'
    • sed '/exp_reg/!d'
  • Somente linhas que não possuem um determinado padrão ou expressão regular
    • sed -n '/padrão/!p'
    • sed '/exp_reg/d'
  • Linha que antecede um determinado padrão ou expressão regular
    • sed -n '/padrão/{g;1!p;};h'
  • Linha que sucede um determinado padrão ou expressão regular
    • sed -n '/exp_reg/{n;p;}'

Exclusão

Espaço e tabulação

Eliminar espaços e tabulações:

  • No início da linha
    • sed 's/^[ \t]*//
    • sed 's/^\s*//'    # Uso do parâmetro "\s"
  • No fim da linha
    • sed 's/[ \t]*$//'
  • No início e no fim da linha
    • sed 's/^[ \t]*//;s/[ \t]*$//'

Linha vazia

Eliminar as linhas vazias:

  • Todas as linhas vazias
    • sed '/^$/d'
    • sed '/./!d'
  • Apenas linhas do cabeçalho
    • sed '/./,$!d'
    • sed -nr '/./,$s/(.*)/\1/p'
  • Apenas linhas do fim
    • sed -e :a -e '/^\n*$/ {$d;N;ba' -e '}'

Intervalo regular

Eliminar uma linha com intervalos regulares:

  • Todas as linhas pares
    • sed '1~2d'
  • Todas as linhas ímpares
    • sed '2~2d'
  • Todas as linhas a partir da linha n
    • sed '3~2d'    # Todas as duas linhas a partir da linha 3

Outros

Unir linhas

  • Unir linhas duas a duas
    • sed '$!N;s/\n//'
  • Unir linhas três a três
    • sed '$!N;s/\n//;$!N;s/\n//;'
  • Se uma linha se termina com barra invertida (\), adicionar a linha seguinte e substituir o fim da linha (\n) por um espaço
    • sed -e :a -e '/\\$/N; s/\\\n/ /; ta'
  • Se uma linha começa com igual (=), adicionar a linha antecedente e substituir o igual por um espaço
    • sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'

Visualização sem considerar maiúsculas e minúsculas

O comando SED possui uma flag que permite buscar um padrão sem diferenciar letras maiúsculas e minúsculas, mas essa flag só se aplica ao comando de substituição (comando s).

Uma dica para utilizar essa flag para visualizar as linhas que possuem um determinado padrão sem considerar maiúsculas e minúsculas é utilizar o comando de substituição 's' combinado ao metacaractere '&' e, é claro, à flag 'I'.

Exemplo para visualizar somente as linhas que contêm o termo 'padrão' (ou Padrão, PADRÃO, pAdrão, PaDrÃo etc.):

  • sed -n 's/padrão/&/Ip' arquivo

Foto: © Sai Kiran Anagani- Unsplash

Veja também
Este documento, intitulado 'Sed - Truques e dicas ', 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.

Assine nossa newsletter!

Receba toda semana o melhor conteúdo

Assine nossa newsletter!