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.
Substituir 'foo' por 'bar' em todas as linhas:
sed 's/foo/bar/'
sed 's/foo/bar/3'
sed 's/foo/bar/g'
sed 's/\(.*\)foo\(.*foo\)/\1bar\2/'
sed 's/\(.*\)foo/\1bar/'
sed '/plop/ s/foo/bar/g'
sed '/plop/! s/foo/bar/g'
sed 's/[Ff]oo/bar/g'
sed 's/azul\|branco\|vermelho/verde/g'
sed q
sed '5q'
sed '1,5!d'
sed -n '$p'
sed '$!d"
sed -e :a -e '$q;N;6,$D;ba'
sed '$!N;$!D'
sed -n '/padrão/p'
sed '/exp_reg/!d'
sed -n '/padrão/!p'
sed '/exp_reg/d'
sed -n '/padrão/{g;1!p;};h'
sed -n '/exp_reg/{n;p;}'
Eliminar espaços e tabulações:
sed 's/^[ \t]*//
sed 's/^\s*//' # Uso do parâmetro "\s"
sed 's/[ \t]*$//'
sed 's/^[ \t]*//;s/[ \t]*$//'
Eliminar as linhas vazias:
sed '/^$/d'
sed '/./!d'
sed '/./,$!d'
sed -nr '/./,$s/(.*)/\1/p'
sed -e :a -e '/^\n*$/ {$d;N;ba' -e '}'
Eliminar uma linha com intervalos regulares:
sed '1~2d'
sed '2~2d'
sed '3~2d' # Todas as duas linhas a partir da linha 3
sed '$!N;s/\n//'
sed '$!N;s/\n//;$!N;s/\n//;'
sed -e :a -e '/\\$/N; s/\\\n/ /; ta'
sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'
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