8
só sed Thobias Salazar Trevisan 21/05/2003 Introdução 1.1. Agradecimentos 1.2. Texto padrão 1. Brincando com Linhas 2.1. Imprimir somente as linhas com uma determinada string 2.2. Imprimir somente a primeira ocorrência da linha com determinada string 2.3. Imprimir a última ocorrência da linha com determinada string 2.4. Imprimir da primeira ocorrência da string até o final 2.5. Imprimir da última ocorrência da string até o final 2.6. Apagar as linhas com uma determinada string 2.7. Apagar apenas a primeira linha com determinada string I 2.8. Apagar apenas a primeira linha com determinada string II 2.9. Adicionar texto no início da linha 2.10. Adicionar texto no final da linha 2.11. Retirar linhas em branco 2.12. Incluir texto no início da linha N 2.13. Incluir texto no final da linha N 2.14. Incluir texto na linha N apagando o conteúdo existente 2.15. Incluir texto antes da linha N 2.16. Incluir linha após a última 2.17. Imprimir somente a linha N 2.18. Retirar a linha N 2.19. Extrair um trecho de uma linha 2.20. Retirar espaços em branco repetidos 2.21. Retirar espaços em branco no início da linha 2.22. Apagar uma string do início da linha 2.23. Apagar do início da linha até uma string 2.24. Apagar de uma string até o final da linha 2.25. Apagar a última string da linha 2.26. Colocar todas as linhas em uma só 2.27. Juntar a linha com a próxima 2.28. Substituir caractere por outro até uma TAG 2.29. Substituir caractere por outro entre TAGs 2.30. Substituir string por outra somente em certas linhas 2.31. Substituir string por outra somente em certas linhas II 2.32. Substituir a última ocorrência de uma string por outra 2.33. Trocar a ordem das palavras (última vira primeira, penúltima vira segunda....) 2.34. Trocar a ordem das letras (igual ao comando rev) 2.35. Trocar de maiúsculas para minúsculas 2.36. Trocar de minúsculas para maiúsculas 2. Brincando com Partes do texto 3.1. Imprimir a linha antes de uma string 3.2. Imprimir a linha antes de uma string e a linha da string 3.3. Imprimir a linha após uma string 3.4. Imprimir a linha após uma string e a linha da string 3.5. Imprimir a linha anterior, posterior e a linha que contém uma string 3.6. Imprimir a linha anterior e posterior a linha que contém uma string 3.7. Imprimir N linhas antes, a linha da string e M linhas após uma string I 3.8. Imprimir N linhas antes, a linha da string e M linhas após uma string II 3.9. Adicionar linha antes de uma string 3.10. Adicionar linha após a linha com uma determinada string 3.11. Imprimir somente entre linha N e M 3.12. Substituir uma string por outra somente entre determinadas linhas 3.13. Imprimir linhas que contém uma ou outra string 3.14. Imprimir linhas que contém uma e outra string 3.15. Extrair um trecho do arquivo 3.16. Extrair trecho que pode ou não estar na mesma linha 3.17. Extrair trecho que pode ou não estar na mesma linha tirando os delimitadores 3.18. Apagar o que está entre delimitadores 3.19. Apagar um trecho se ele contém um padrão 3.20. Trocar de lugar a linha com a próxima (troca de lugar linha 1 com 2, 3 com 4...) I 3.21. Trocar de lugar a linha com a próxima (troca de lugar linha 1 com 2, 3 com 4...) II 3. Utilidade Pública 4.1. Retirar comandos HTML (tudo entre < e >) 4.2. Pesquisar se existe algum usuário sem senha no /etc/passwd 4. 1. Introdução 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: http://sed.sourceforge.net/ - Página $HOME do sed http://aurelio.net/sed/sed-HOWTO/ - sed HOWTO em pt_BR http://aurelio.net/sed/ - página com links e programas em sed (pt_BR) http://br.groups.yahoo.com/group/sed-br/ - página da lista sed-br http://sed.sourceforge.net/sedfaq.html - The sed FAQ (english) http://www.math.fu-berlin.de/user/guckes/sed/ - página da lista sed users (vários links e docs - english) http://aurelio.net/er/ - expressões regulares (pt_BR) 1.1. Agradecimentos 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: sed FAQ (era: Re: concatenar linhas 1. FAQ sed 2. Opine sobre o nome do documento da lista 3. Aqui vai meu muito obrigado para as pessoas que ajudaram na construção deste documento. A galera que contribuiu: Aurélio Marinho Jargas Silvano B. Dias Anilton Lucas A lista sed-br 1.2. Texto padrão Em todos os exemplos vamos procurar manter sempre o mesmo texto para facilitar a compreensão das perguntas e respostas. Esperamos deste modo deixar o só sed mais amigável e que você ache a sua pergunta de maneira fácil e agil. =8) 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 é: só sed http://thobias.org/doc/sosed.html#toc32 1 de 8 09-04-2015 13:53

só sed

Embed Size (px)

DESCRIPTION

Manual do Sed

Citation preview

  • s sedThobias Salazar Trevisan

    21/05/2003

    Introduo1.1. Agradecimentos1.2. Texto padro

    1.

    Brincando com Linhas2.1. Imprimir somente as linhas com uma determinada string2.2. Imprimir somente a primeira ocorrncia da linha com determinada string2.3. Imprimir a ltima ocorrncia da linha com determinada string2.4. Imprimir da primeira ocorrncia da string at o nal2.5. Imprimir da ltima ocorrncia da string at o nal2.6. Apagar as linhas com uma determinada string2.7. Apagar apenas a primeira linha com determinada string I2.8. Apagar apenas a primeira linha com determinada string II2.9. Adicionar texto no incio da linha2.10. Adicionar texto no nal da linha2.11. Retirar linhas em branco2.12. Incluir texto no incio da linha N2.13. Incluir texto no nal da linha N2.14. Incluir texto na linha N apagando o contedo existente2.15. Incluir texto antes da linha N2.16. Incluir linha aps a ltima2.17. Imprimir somente a linha N2.18. Retirar a linha N2.19. Extrair um trecho de uma linha2.20. Retirar espaos em branco repetidos2.21. Retirar espaos em branco no incio da linha2.22. Apagar uma string do incio da linha2.23. Apagar do incio da linha at uma string2.24. Apagar de uma string at o nal da linha2.25. Apagar a ltima string da linha2.26. Colocar todas as linhas em uma s2.27. Juntar a linha com a prxima2.28. Substituir caractere por outro at uma TAG2.29. Substituir caractere por outro entre TAGs2.30. Substituir string por outra somente em certas linhas2.31. Substituir string por outra somente em certas linhas II2.32. Substituir a ltima ocorrncia de uma string por outra2.33. Trocar a ordem das palavras (ltima vira primeira, penltima vira segunda....)2.34. Trocar a ordem das letras (igual ao comando rev)2.35. Trocar de maisculas para minsculas2.36. Trocar de minsculas para maisculas

    2.

    Brincando com Partes do texto3.1. Imprimir a linha antes de uma string3.2. Imprimir a linha antes de uma string e a linha da string3.3. Imprimir a linha aps uma string3.4. Imprimir a linha aps uma string e a linha da string3.5. Imprimir a linha anterior, posterior e a linha que contm uma string3.6. Imprimir a linha anterior e posterior a linha que contm uma string3.7. Imprimir N linhas antes, a linha da string e M linhas aps uma string I3.8. Imprimir N linhas antes, a linha da string e M linhas aps uma string II3.9. Adicionar linha antes de uma string3.10. Adicionar linha aps a linha com uma determinada string3.11. Imprimir somente entre linha N e M3.12. Substituir uma string por outra somente entre determinadas linhas3.13. Imprimir linhas que contm uma ou outra string3.14. Imprimir linhas que contm uma e outra string3.15. Extrair um trecho do arquivo3.16. Extrair trecho que pode ou no estar na mesma linha3.17. Extrair trecho que pode ou no estar na mesma linha tirando os delimitadores3.18. Apagar o que est entre delimitadores3.19. Apagar um trecho se ele contm um padro3.20. Trocar de lugar a linha com a prxima (troca de lugar linha 1 com 2, 3 com 4...) I3.21. Trocar de lugar a linha com a prxima (troca de lugar linha 1 com 2, 3 com 4...) II

    3.

    Utilidade Pblica4.1. Retirar comandos HTML (tudo entre < e >)4.2. Pesquisar se existe algum usurio sem senha no /etc/passwd

    4.

    1. IntroduoEste texto se prope a ser uma maneira fcil das pessoas acharem aquele sed perdido para resolver seu problema, ou seja, aqui vamos direto ao ponto, sem frescura ou enrolao.Se voc est procurando um texto que explique o SED, visite estes links:

    http://sed.sourceforge.net/ - Pgina $HOME do sedhttp://aurelio.net/sed/sed-HOWTO/ - sed HOWTO em pt_BRhttp://aurelio.net/sed/ - pgina com links e programas em sed (pt_BR)http://br.groups.yahoo.com/group/sed-br/ - pgina da lista sed-brhttp://sed.sourceforge.net/sedfaq.html - The sed FAQ (english)http://www.math.fu-berlin.de/user/guckes/sed/ - pgina da lista sed users (vrios links e docs - english)http://aurelio.net/er/ - expresses regulares (pt_BR)

    1.1. AgradecimentosA idia de elaborar este documento surgiu em um mail do Aurlio para a lista de discusso sed-br. Se voc quiser acompanhar as threads da criao aqui vo os links para as 3 threads principais:

    sed FAQ (era: Re: concatenar linhas1. FAQ sed2. Opine sobre o nome do documento da lista3.

    Aqui vai meu muito obrigado para as pessoas que ajudaram na construo deste documento.A galera que contribuiu:

    Aurlio Marinho JargasSilvano B. DiasAnilton LucasA lista sed-br

    1.2. Texto padroEm todos os exemplos vamos procurar manter sempre o mesmo texto para facilitar a compreenso das perguntas e respostas. Esperamos deste modo deixar o s sed mais amigvel e que voc ache a sua pergunta demaneira fcil e agil. =8)Dica:Leia o arquivo de entrada com calma. Analise-o, respire e releia-o.

    Assim car mais fcil para voc entender os exemplos e as mudanas ocorridas aps a execuo de cada sed.O arquivo.txt de exemplo :

    s sed http://thobias.org/doc/sosed.html#toc32

    1 de 8 09-04-2015 13:53

  • prompt> cat arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2. Brincando com Linhas2.1. Imprimir somente as linhas com uma determinada stringsed -n '/dia/p'

    prompt> sed -n '/dia/p' arquivo.txt No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou:

    2.2. Imprimir somente a primeira ocorrncia da linha com determinada stringsed -n '/dia/{p;q;}'

    prompt> sed -n '/dia/{p;q;}' arquivo.txt No segundo dia, fez um rascunho lpis.

    2.3. Imprimir a ltima ocorrncia da linha com determinada stringsed -n '/dia/h;${x;p;}'

    prompt> sed -n '/dia/h;${x;p;}' arquivo.txt No quarto dia, ficou com preguia, ento falou:

    2.4. Imprimir da primeira ocorrncia da string at o nalsed '/dia/,$!d'

    prompt> sed '/dia/,$!d' arquivo.txt No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.5. Imprimir da ltima ocorrncia da string at o nalsed -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 preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.6. Apagar as linhas com uma determinada stringsed '/dia/d'

    prompt> sed '/dia/d' arquivo.txt No incio do incio, era um nada. - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.7. Apagar apenas a primeira linha com determinada string Ised '/dia/{H;x;/^\n/d;g;}'

    prompt> sed '/dia/{H;x;/^\n/d;g;}' arquivo.txt No incio do incio, era um nada. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.8. Apagar apenas a primeira linha com determinada string IIsed -n '/dia/{:a;n;p;ba;};p'

    prompt> sed -n '/dia/{:a;n;p;ba;};p' arquivo.txt No incio do incio, era um nada. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.9. Adicionar texto no incio da linhased 's/^/texto incluido/'

    prompt> sed 's/^/texto incluido/' arquivo.txt texto incluidoNo incio do incio, era um nada. texto incluido No segundo dia, fez um rascunho lpis. texto incluido No terceiro dia, apagou e comeou tudo de novo. texto incluido No quarto dia, ficou com preguia, ento falou: texto incluido texto incluido- Sexta-feira eu continuo, se no estiver cansado... texto incluido texto incluido E no fim, nada.

    2.10. Adicionar texto no nal da linha

    s sed http://thobias.org/doc/sosed.html#toc32

    2 de 8 09-04-2015 13:53

  • sed 's/$/texto incluido/'

    prompt> sed 's/$/texto incluido/' arquivo.txt No incio do incio, era um nada.texto incluido No segundo dia, fez um rascunho lpis.texto incluido No terceiro dia, apagou e comeou tudo de novo.texto incluido No quarto dia, ficou com preguia, ento falou:texto incluido texto incluido - Sexta-feira eu continuo, se no estiver cansado...texto incluido texto incluido E no fim, nada.texto incluido

    2.11. Retirar linhas em brancosed '/^$/d'

    prompt> sed '/^$/d' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.12. Incluir texto no incio da linha NOBS: troque o nmero 1 para a linha que voc quisersed '1s/^/comeo do arquivo/'

    prompt> sed '1s/^/comeo do arquivo/' arquivo.txt comeo do arquivoNo incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.13. Incluir texto no nal da linha NOBS: troque o nmero 1 para a linha que voc quisersed '1s/$/final da linha/'

    prompt> sed '1s/$/final da linha/' arquivo.txt No incio do incio, era um nada.final da linha No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.14. Incluir texto na linha N apagando o contedo existenteOBS: troque o nmero 1 para a linha que voc quisersed '1s/.*/incio do arquivo/'

    prompt> sed '1s/.*/incio do arquivo/' arquivo.txt incio do arquivo No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.15. Incluir texto antes da linha NOBS: troque o nmero 1 para a linha que voc quisersed -e '1i\' -e 'comeo do arquivo'

    prompt> sed -e '1i\' -e 'comeo do arquivo' arquivo.txt comeo do arquivo No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.16. Incluir linha aps a ltimased -e '$a\' -e 'linha final'

    prompt> sed -e '$a\' -e 'linha final' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada. linha final

    2.17. Imprimir somente a linha NOBS: troque o nmero 2 para a linha que voc quisersed '2!d'

    prompt> sed '2!d' arquivo.txt No segundo dia, fez um rascunho lpis.

    2.18. Retirar a linha NOBS: troque o nmero 2 pela linha que voc quisersed '2d'

    s sed http://thobias.org/doc/sosed.html#toc32

    3 de 8 09-04-2015 13:53

  • prompt> sed '2d' arquivo.txt No incio do incio, era um nada. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.19. Extrair um trecho de uma linhaOBS: O mesmo que cut -d, -f2sed 's/^[^,]*,\([^,]\+\),\?.*/\1/'

    prompt> sed 's/^[^,]*,\([^,]\+\),\?.*/\1/' arquivo.txt era um nada. fez um rascunho lpis. apagou e comeou tudo de novo. ficou com preguia se no estiver cansado... nada.

    2.20. Retirar espaos em branco repetidossed 's/[ ]\+/ /g'

    prompt> sed 's/[ ]\+/ /g' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.21. Retirar espaos em branco no incio da linhased 's/^ \+//'

    prompt> sed 's/^ \+//' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.22. Apagar uma string do incio da linhased 's/^No//'

    prompt> sed 's/^No//' arquivo.txt incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.23. Apagar do incio da linha at uma stringsed 's/^.*dia//'

    prompt> sed 's/^.*dia//' arquivo.txt No incio do incio, era um nada. , fez um rascunho lpis. , apagou e comeou tudo de novo. , ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.24. Apagar de uma string at o nal da linhased 's/dia.*$//'

    prompt> sed 's/dia.*$//' arquivo.txt No incio do incio, era um nada. No segundo No terceiro No quarto - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.25. Apagar a ltima string da linhased 's/ [^ ]\+ *$//g'

    prompt> sed 's/ [^ ]\+ *$//g' arquivo.txt No incio do incio, era um No segundo dia, fez um rascunho No terceiro dia, apagou e comeou tudo de No quarto dia, ficou com preguia, ento - Sexta-feira eu continuo, se no estiver E no fim,

    2.26. Colocar todas as linhas em uma ssed ':a;$!N;s/\n//;ta;'

    prompt> sed ':a;$!N;s/\n//;ta;' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou:- Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.27. Juntar a linha com a prxima

    s sed http://thobias.org/doc/sosed.html#toc32

    4 de 8 09-04-2015 13:53

  • sed 'N;s/\n//'

    prompt> sed 'N;s/\n//' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.28. Substituir caractere por outro at uma TAGOBS: troca 'o' por 'x' at encontrar a primeira ','sed ':a;s/^\([^,]\+\)o/\1x/;ta'

    prompt> sed ':a;s/^\([^,]\+\)o/\1x/;ta' arquivo.txt Nx incix dx incix, era um nada. Nx segundx dia, fez um rascunho lpis. Nx terceirx dia, apagou e comeou tudo de novo. Nx quartx dia, ficou com preguia, ento falou: - Sexta-feira eu cxntinux, se no estiver cansado... E nx fim, nada.

    2.29. Substituir caractere por outro entre TAGsOBS: troca 'o' por 'x' entre a segunda e terceira ','sed ':a;s/^\([^,]*,[^,]\+\)o/\1x/;ta'

    prompt> sed ':a;s/^\([^,]*,[^,]\+\)o/\1x/;ta' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunhx lpis. No terceiro dia, apagxu e cxmexu tudx de nxvx. No quarto dia, ficxu cxm preguia, ento falou: - Sexta-feira eu continuo, se nx estiver cansadx... E no fim, nada.

    2.30. Substituir string por outra somente em certas linhasOBS: substitui 'dia' por 'noite' somente em linhas que contm a string 'terceiro'sed '/terceiro/s/dia/noite/g'

    prompt> sed '/terceiro/s/dia/noite/g' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro noite, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.31. Substituir string por outra somente em certas linhas IIOBS: substitui 'dia' por 'noite' nas linha que NO contm a string 'terceiro'sed '/terceiro/!s/dia/noite/g'

    prompt> sed '/terceiro/!s/dia/noite/g' arquivo.txt No incio do incio, era um nada. No segundo noite, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto noite, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.32. Substituir a ltima ocorrncia de uma string por outrased ':a;$!{N;ba;};s/\(.*\)dia/\1noite/'

    prompt> sed ':a;$!{N;ba;};s/\(.*\)dia/\1noite/' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto noite, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    2.33. Trocar a ordem das palavras (ltima vira primeira, penltima vira segunda....)OBS: se o seu arquivo tiver o caractere '' troque o '' do sed por outro carectere que no exista.sed 's/^/ /;:a;s/\(.*\) \+\([^ ]\+\)/\2 \1/;ta;s///'

    prompt> sed 's/^/ /;:a;s/\(.*\) \+\([^ ]\+\)/\2 \1/;ta;s///' arquivo.txt nada. um era incio, do incio No lpis. rascunho um fez dia, segundo No novo. de tudo comeou e apagou dia, terceiro No falou: ento preguia, com ficou dia, quarto No cansado... estiver no se continuo, eu Sexta-feira - nada. fim, no E

    2.34. Trocar a ordem das letras (igual ao comando rev)sed 's/^//;:a;s/\(.*\)\(.\)/\2\1/;ta;s/$//'

    prompt> sed 's/^//;:a;s/\(.*\)\(.\)/\2\1/;ta;s/$//' arquivo.txt .adan mu are ,oicni od oicni oN .sipl ohnucsar mu zef ,aid odnuges oN .ovon ed odut uoemoc e uogapa ,aid oriecret oN :uolaf otne ,aiugerp moc uocif ,aid otrauq oN ...odasnac revitse on es ,ounitnoc ue arief-atxeS - .adan ,mif on E

    2.35. Trocar de maisculas para minsculas

    s sed http://thobias.org/doc/sosed.html#toc32

    5 de 8 09-04-2015 13:53

  • sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'

    prompt> sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' arquivo.txt no incio do incio, era um nada. no segundo dia, fez um rascunho lpis. no terceiro dia, apagou e comeou tudo de novo. no quarto dia, ficou com preguia, ento falou: - sexta-feira eu continuo, se no estiver cansado... e no fim, nada.

    2.36. Trocar de minsculas para maisculassed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'

    prompt> sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' arquivo.txt NO INCIO DO INCIO, ERA UM NADA. NO SEGUNDO DIA, FEZ UM RASCUNHO LPIS. NO TERCEIRO DIA, APAGOU E COMEOU TUDO DE NOVO. NO QUARTO DIA, FICOU COM PREGUIA, ENTO FALOU: - SEXTA-FEIRA EU CONTINUO, SE NO ESTIVER CANSADO... E NO FIM, NADA.

    3. Brincando com Partes do texto3.1. Imprimir a linha antes de uma stringsed -n '/segundo/{x;p;};h'

    prompt> sed -n '/segundo/{x;p;};h' arquivo.txt No incio do incio, era um nada.

    3.2. Imprimir a linha antes de uma string e a linha da stringsed -n '/segundo/{H;x;p;};h'

    prompt> sed -n '/segundo/{H;x;p;};h' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis.

    3.3. Imprimir a linha aps uma stringsed -n '/segundo/{n;p;}'

    prompt> sed -n '/segundo/{n;p;}' arquivo.txt No terceiro dia, apagou e comeou tudo de novo.

    3.4. Imprimir a linha aps uma string e a linha da stringsed -n '/segundo/{N;p;}'

    prompt> sed -n '/segundo/{N;p;}' arquivo.txt No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo.

    3.5. Imprimir a linha anterior, posterior e a linha que contm uma stringsed -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 lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou:

    3.6. Imprimir a linha anterior e posterior a linha que contm uma stringsed -n '/terceiro/{x;p;n;p;};h'

    prompt> sed -n '/terceiro/{x;p;n;p;};h' arquivo.txt No segundo dia, fez um rascunho lpis. No quarto dia, ficou com preguia, ento falou:

    3.7. Imprimir N linhas antes, a linha da string e M linhas aps uma string IOBS: 'quarto' a string, troque o '2' de 1,2 para o nmero de linhas antes, e adicione quantos 'Ns' para linhas aps. No exemplo est 2 antes e 2 depoissed -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 lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado...

    3.8. Imprimir N linhas antes, a linha da string e M linhas aps uma string IIOBS: troque o nmero entre chaves '{2}' pelo nmero de linhas antes da string e adicione quandos 'Ns' para linhas aps. No exemploest 2 antes e 2 depoissed '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 lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado...

    3.9. Adicionar linha antes de uma stringOBS: inclui o 'Texto adicionado' antes da linha com a string 'segundo'sed '/segundo/{h;s/.*/Texto adicionado/;p;x;}'

    prompt> sed '/segundo/{h;s/.*/Texto adicionado/;p;x;}' arquivo.txt

    s sed http://thobias.org/doc/sosed.html#toc32

    6 de 8 09-04-2015 13:53

  • No incio do incio, era um nada. Texto adicionado No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    3.10. Adicionar linha aps a linha com uma determinada stringsed '/segundo/{p;s/.*/Texto adicionado/;}'

    prompt> sed '/segundo/{p;s/.*/Texto adicionado/;}' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. Texto adicionado No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    3.11. Imprimir somente entre linha N e Msed '4,6!d'

    prompt> sed '4,6!d' arquivo.txt No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado...

    3.12. Substituir uma string por outra somente entre determinadas linhassed '3,6s/dia/noite/'

    prompt> sed '3,6s/dia/noite/' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro noite, apagou e comeou tudo de novo. No quarto noite, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    3.13. Imprimir linhas que contm uma ou outra stringOBS: imprime linhas que contm a string 'segundo' ou 'quarto'sed '/segundo\|quarto/!d'

    prompt> sed '/segundo\|quarto/!d' arquivo.txt No segundo dia, fez um rascunho lpis. No quarto dia, ficou com preguia, ento falou:

    3.14. Imprimir linhas que contm uma e outra stringOBS: imprime linhas que contm 'No' e 'segundo'sed -n '/No.*segundo/p'

    prompt> sed -n '/No.*segundo/p' arquivo.txt No segundo dia, fez um rascunho lpis.

    3.15. Extrair um trecho do arquivosed -n '/segundo/,/quarto/p'

    prompt> sed -n '/segundo/,/quarto/p' arquivo.txt No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou:

    3.16. Extrair trecho que pode ou no estar na mesma linhased -n '/segundo/{:a;/quarto/!{N;ba;};p;}'

    prompt> sed -n '/segundo/{:a;/quarto/!{N;ba;};p;}' arquivo.txt No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou:

    3.17. Extrair trecho que pode ou no estar na mesma linha tirando os delimitadoresOBS: 'segundo' a TAG inicial e 'falou' a TAG nalsed -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 lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento

    3.18. Apagar o que est entre delimitadoressed '/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 incio do incio, era um nada. No n: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    3.19. Apagar um trecho se ele contm um padroOBS: 'segundo' marca o incio do trecho, 'quarto' o nal, e 'rascunho' o padro de procura

    s sed http://thobias.org/doc/sosed.html#toc32

    7 de 8 09-04-2015 13:53

  • sed '/segundo/{:a;/quarto/!{N;ba;};/rascunho/d;}'

    prompt> sed '/segundo/{:a;/quarto/!{N;ba;};/rascunho/d;}' arquivo.txt No incio do incio, era um nada. - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    3.20. Trocar de lugar a linha com a prxima (troca de lugar linha 1 com 2, 3 com 4...) Ised -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 lpis. No incio do incio, era um nada. No quarto dia, ficou com preguia, ento falou: No terceiro dia, apagou e comeou tudo de novo. - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    3.21. Trocar de lugar a linha com a prxima (troca de lugar linha 1 com 2, 3 com 4...) IIsed '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 lpis. No incio do incio, era um nada. No quarto dia, ficou com preguia, ento falou: No terceiro dia, apagou e comeou tudo de novo. - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    4. Utilidade Pblica4.1. Retirar comandos HTML (tudo entre < e >)sed 's/]*>//g'

    prompt> sed 's/]*>//g' arquivo.txt No incio do incio, era um nada. No segundo dia, fez um rascunho lpis. No terceiro dia, apagou e comeou tudo de novo. No quarto dia, ficou com preguia, ento falou: - Sexta-feira eu continuo, se no estiver cansado... E no fim, nada.

    4.2. Pesquisar se existe algum usurio sem senha no /etc/passwdsed -n '/^[^:]\+::/p'

    prompt> sed -n '/^[^:]\+::/p' arquivo.txt

    This HTML page is (see source)

    s sed http://thobias.org/doc/sosed.html#toc32

    8 de 8 09-04-2015 13:53