Este texto se propõe a ser uma maneira fácil das pessoas acharem aquele sed perdido para resolver seu problema, ou seja, aqui vamos direto ao ponto, sem frescura ou enrolação.
Se você está procurando um texto que explique o SED, visite estes links:
A idéia de elaborar este documento surgiu em um mail do Aurélio para a lista de discussão sed-br. Se você quiser acompanhar as threads da criação aqui vão os links para as 3 threads principais:
Aqui vai meu muito obrigado para as pessoas que ajudaram na construção deste documento.
| A galera que contribuiu: |
Dica:
| Leia o arquivo de entrada com calma. Analise-o, respire e releia-o. |
Assim ficará mais fácil para você entender os exemplos e as mudanças ocorridas após a execução de cada sed.
O arquivo.txt de exemplo é:
prompt> cat arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed -n '/dia/p' |
prompt> sed -n '/dia/p' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
|
sed -n '/dia/{p;q;}' |
prompt> sed -n '/dia/{p;q;}' arquivo.txt
No segundo dia, fez um rascunho à lápis.
|
sed -n '/dia/h;${x;p;}' |
prompt> sed -n '/dia/h;${x;p;}' arquivo.txt
No quarto dia, ficou com preguiça, então falou:
|
sed '/dia/,$!d' |
prompt> sed '/dia/,$!d' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed -n '/dia/{h;${x;p;};d;};H;${x;p;}' |
prompt> sed -n '/dia/{h;${x;p;};d;};H;${x;p;}' arquivo.txt
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '/dia/d' |
prompt> sed '/dia/d' arquivo.txt
No início do início, era um nada.
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '/dia/{H;x;/^\n/d;g;}' |
prompt> sed '/dia/{H;x;/^\n/d;g;}' arquivo.txt
No início do início, era um nada.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed -n '/dia/{:a;n;p;ba;};p' |
prompt> sed -n '/dia/{:a;n;p;ba;};p' arquivo.txt
No início do início, era um nada.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 's/^/texto incluido/' |
prompt> sed 's/^/texto incluido/' arquivo.txt texto incluidoNo início do início, era um nada. texto incluido No segundo dia, fez um rascunho à lápis. texto incluido No terceiro dia, apagou e começou tudo de novo. texto incluido No quarto dia, ficou com preguiça, então falou: texto incluido texto incluido- Sexta-feira eu continuo, se não estiver cansado... texto incluido texto incluido E no fim, nada. |
sed 's/$/texto incluido/' |
prompt> sed 's/$/texto incluido/' arquivo.txt
No início do início, era um nada.texto incluido
No segundo dia, fez um rascunho à lápis.texto incluido
No terceiro dia, apagou e começou tudo de novo.texto incluido
No quarto dia, ficou com preguiça, então falou:texto incluido
texto incluido
- Sexta-feira eu continuo, se não estiver cansado...texto incluido
texto incluido
E no fim, nada.texto incluido
|
sed '/^$/d' |
prompt> sed '/^$/d' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '1s/^/começo do arquivo/' |
prompt> sed '1s/^/começo do arquivo/' arquivo.txt
começo do arquivoNo início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '1s/$/final da linha/' |
prompt> sed '1s/$/final da linha/' arquivo.txt
No início do início, era um nada.final da linha
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '1s/.*/início do arquivo/' |
prompt> sed '1s/.*/início do arquivo/' arquivo.txt
início do arquivo
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed -e '1i\' -e 'começo do arquivo' |
prompt> sed -e '1i\' -e 'começo do arquivo' arquivo.txt
começo do arquivo
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed -e '$a\' -e 'linha final' |
prompt> sed -e '$a\' -e 'linha final' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
linha final
|
sed '2!d' |
prompt> sed '2!d' arquivo.txt No segundo dia, fez um rascunho à lápis. |
sed '2d' |
prompt> sed '2d' arquivo.txt
No início do início, era um nada.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 's/^[^,]*,\([^,]\+\),\?.*/\1/' |
prompt> sed 's/^[^,]*,\([^,]\+\),\?.*/\1/' arquivo.txt era um nada. fez um rascunho à lápis. apagou e começou tudo de novo. ficou com preguiça se não estiver cansado... nada. |
sed 's/[ ]\+/ /g' |
prompt> sed 's/[ ]\+/ /g' arquivo.txt No início do início, era um nada. No segundo dia, fez um rascunho à lápis. No terceiro dia, apagou e começou tudo de novo. No quarto dia, ficou com preguiça, então falou: - Sexta-feira eu continuo, se não estiver cansado... E no fim, nada. |
sed 's/^ \+//' |
prompt> sed 's/^ \+//' arquivo.txt No início do início, era um nada. No segundo dia, fez um rascunho à lápis. No terceiro dia, apagou e começou tudo de novo. No quarto dia, ficou com preguiça, então falou: - Sexta-feira eu continuo, se não estiver cansado... E no fim, nada. |
sed 's/^No//' |
prompt> sed 's/^No//' arquivo.txt
início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 's/^.*dia//' |
prompt> sed 's/^.*dia//' arquivo.txt
No início do início, era um nada.
, fez um rascunho à lápis.
, apagou e começou tudo de novo.
, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 's/dia.*$//' |
prompt> sed 's/dia.*$//' arquivo.txt
No início do início, era um nada.
No segundo
No terceiro
No quarto
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 's/ [^ ]\+ *$//g' |
prompt> sed 's/ [^ ]\+ *$//g' arquivo.txt
No início do início, era um
No segundo dia, fez um rascunho à
No terceiro dia, apagou e começou tudo de
No quarto dia, ficou com preguiça, então
- Sexta-feira eu continuo, se não estiver
E no fim,
|
sed ':a;$!N;s/\n//;ta;' |
prompt> sed ':a;$!N;s/\n//;ta;' arquivo.txt No início do início, era um nada. No segundo dia, fez um rascunho à lápis. No terceiro dia, apagou e começou tudo de novo. No quarto dia, ficou com preguiça, então falou:- Sexta-feira eu continuo, se não estiver cansado... E no fim, nada. |
sed 'N;s/\n//' |
prompt> sed 'N;s/\n//' arquivo.txt
No início do início, era um nada. No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo. No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed ':a;s/^\([^,]\+\)o/\1x/;ta' |
prompt> sed ':a;s/^\([^,]\+\)o/\1x/;ta' arquivo.txt
Nx inícix dx inícix, era um nada.
Nx segundx dia, fez um rascunho à lápis.
Nx terceirx dia, apagou e começou tudo de novo.
Nx quartx dia, ficou com preguiça, então falou:
- Sexta-feira eu cxntinux, se não estiver cansado...
E nx fim, nada.
|
sed ':a;s/^\([^,]*,[^,]\+\)o/\1x/;ta' |
prompt> sed ':a;s/^\([^,]*,[^,]\+\)o/\1x/;ta' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunhx à lápis.
No terceiro dia, apagxu e cxmeçxu tudx de nxvx.
No quarto dia, ficxu cxm preguiça, então falou:
- Sexta-feira eu continuo, se nãx estiver cansadx...
E no fim, nada.
|
sed '/terceiro/s/dia/noite/g' |
prompt> sed '/terceiro/s/dia/noite/g' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro noite, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '/terceiro/!s/dia/noite/g' |
prompt> sed '/terceiro/!s/dia/noite/g' arquivo.txt
No início do início, era um nada.
No segundo noite, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto noite, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed ':a;$!{N;ba;};s/\(.*\)dia/\1noite/' |
prompt> sed ':a;$!{N;ba;};s/\(.*\)dia/\1noite/' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto noite, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 's/^/§ /;:a;s/\(.*\)§ \+\([^ ]\+\)/\2 \1§/;ta;s/§//' |
prompt> sed 's/^/§ /;:a;s/\(.*\)§ \+\([^ ]\+\)/\2 \1§/;ta;s/§//' arquivo.txt nada. um era início, do início No lápis. à rascunho um fez dia, segundo No novo. de tudo começou e apagou dia, terceiro No falou: então preguiça, com ficou dia, quarto No cansado... estiver não se continuo, eu Sexta-feira - nada. fim, no E |
sed 's/^/§/;:a;s/\(.*\)§\(.\)/\2\1§/;ta;s/§$//' |
prompt> sed 's/^/§/;:a;s/\(.*\)§\(.\)/\2\1§/;ta;s/§$//' arquivo.txt .adan mu are ,oicíni od oicíni oN .sipál à ohnucsar mu zef ,aid odnuges oN .ovon ed odut uoçemoc e uogapa ,aid oriecret oN :uolaf oãtne ,açiugerp moc uocif ,aid otrauq oN ...odasnac revitse oãn es ,ounitnoc ue arief-atxeS - .adan ,mif on E |
sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/' |
prompt> sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/' arquivo.txt
no início do início, era um nada.
no segundo dia, fez um rascunho à lápis.
no terceiro dia, apagou e começou tudo de novo.
no quarto dia, ficou com preguiça, então falou:
- sexta-feira eu continuo, se não estiver cansado...
e no fim, nada.
|
sed 'y/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/' |
prompt> sed 'y/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/' arquivo.txt
NO INÍCIO DO INÍCIO, ERA UM NADA.
NO SEGUNDO DIA, FEZ UM RASCUNHO À LÁPIS.
NO TERCEIRO DIA, APAGOU E COMEÇOU TUDO DE NOVO.
NO QUARTO DIA, FICOU COM PREGUIÇA, ENTÃO FALOU:
- SEXTA-FEIRA EU CONTINUO, SE NÃO ESTIVER CANSADO...
E NO FIM, NADA.
|
sed -n '/segundo/{x;p;};h' |
prompt> sed -n '/segundo/{x;p;};h' arquivo.txt
No início do início, era um nada.
|
sed -n '/segundo/{H;x;p;};h' |
prompt> sed -n '/segundo/{H;x;p;};h' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
|
sed -n '/segundo/{n;p;}' |
prompt> sed -n '/segundo/{n;p;}' arquivo.txt
No terceiro dia, apagou e começou tudo de novo.
|
sed -n '/segundo/{N;p;}' |
prompt> sed -n '/segundo/{N;p;}' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
|
sed -n '/terceiro/{H;x;p;n;p;};h' |
prompt> sed -n '/terceiro/{H;x;p;n;p;};h' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
|
sed -n '/terceiro/{x;p;n;p;};h' |
prompt> sed -n '/terceiro/{x;p;n;p;};h' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No quarto dia, ficou com preguiça, então falou:
|
sed -n '/quarto/{x;p;x;N;N;p;q;};1!{H;g;};1,2!s/[^\n]*\n//;h;' |
prompt> sed -n '/quarto/{x;p;x;N;N;p;q;};1!{H;g;};1,2!s/[^\n]*\n//;h;' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
|
sed 'H;/quarto/{g;N;N;s/^\n//p;}; x;s/.*\(\(\n[^\n]*\)\{2\}\)/\1/;x ;d' |
prompt> sed 'H;/quarto/{g;N;N;s/^\n//p;}; x;s/.*\(\(\n[^\n]*\)\{2\}\)/\1/;x ;d' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
|
sed '/segundo/{h;s/.*/Texto adicionado/;p;x;}' |
prompt> sed '/segundo/{h;s/.*/Texto adicionado/;p;x;}' arquivo.txt
No início do início, era um nada.
Texto adicionado
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '/segundo/{p;s/.*/Texto adicionado/;}' |
prompt> sed '/segundo/{p;s/.*/Texto adicionado/;}' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
Texto adicionado
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '4,6!d' |
prompt> sed '4,6!d' arquivo.txt
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
|
sed '3,6s/dia/noite/' |
prompt> sed '3,6s/dia/noite/' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro noite, apagou e começou tudo de novo.
No quarto noite, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '/segundo\|quarto/!d' |
prompt> sed '/segundo\|quarto/!d' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No quarto dia, ficou com preguiça, então falou:
|
sed -n '/No.*segundo/p' |
prompt> sed -n '/No.*segundo/p' arquivo.txt No segundo dia, fez um rascunho à lápis. |
sed -n '/segundo/,/quarto/p' |
prompt> sed -n '/segundo/,/quarto/p' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
|
sed -n '/segundo/{:a;/quarto/!{N;ba;};p;}' |
prompt> sed -n '/segundo/{:a;/quarto/!{N;ba;};p;}' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
|
sed -n '/segundo/{/falou/tc;:a;/falou/!{N;ba;};:c;s/.*segundo//;s/falou.*$//;p;}' |
prompt> sed -n '/segundo/{/falou/tc;:a;/falou/!{N;ba;};:c;s/.*segundo//;s/falou.*$//;p;}' arquivo.txt
dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então
|
sed '/segundo/{/falou/{s/segundo.*falou//;t};:a;/falou/!{N;s/\n//;ta;};s/segundo.*falou/\n/;}' |
prompt> sed '/segundo/{/falou/{s/segundo.*falou//;t};:a;/falou/!{N;s/\n//;ta;};s/segundo.*falou/\n/;}' arquivo.txt
No início do início, era um nada.
No n:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed '/segundo/{:a;/quarto/!{N;ba;};/rascunho/d;}' |
prompt> sed '/segundo/{:a;/quarto/!{N;ba;};/rascunho/d;}' arquivo.txt
No início do início, era um nada.
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed -n '$ba;h;n;p;x;:a;p' |
prompt> sed -n '$ba;h;n;p;x;:a;p' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No início do início, era um nada.
No quarto dia, ficou com preguiça, então falou:
No terceiro dia, apagou e começou tudo de novo.
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 'N;s/\([^\n]*\)\(\n\)\([^\n]*\)/\3\2\1/' |
prompt> sed 'N;s/\([^\n]*\)\(\n\)\([^\n]*\)/\3\2\1/' arquivo.txt
No segundo dia, fez um rascunho à lápis.
No início do início, era um nada.
No quarto dia, ficou com preguiça, então falou:
No terceiro dia, apagou e começou tudo de novo.
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed 's/<[^>]*>//g' |
prompt> sed 's/<[^>]*>//g' arquivo.txt
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:
- Sexta-feira eu continuo, se não estiver cansado...
E no fim, nada.
|
sed -n '/^[^:]\+::/p' |
prompt> sed -n '/^[^:]\+::/p' arquivo.txt |
This HTML page is
(see source)