30 exemplos do comando Sed - com Regex

O Sed é um editor de textos não interativo.Vem do inglês Stream EDitor, ou seja, editor de fluxos (de texto).


30 exemplos do comando sed - com regex

O Sed é um editor de textos não interativo. Vem do inglês [S]tream [ED]itor, ou seja, editor de fluxos de texto.

O Sed da GNU, atualmente é o utilizado pela maioria das distribuições de Linux e é o que tem mais funcionalidades novas: GNU/Linux.

É case sentive

  • -i altera o arquivo
  • -e imprime na tela sem alterar o arquivo
  • -n faz a supressão, mostra só o resutado do comando
  • s substitui um trecho de texto por outro
  • ! inverte a lógica do comando
  • ; separador de comandos
  • | separador de strings
  • d no final deleta
  • p no final imprime
  • g no final (como se usa o d e p) altera todas as ocorrências
  • q sai do sed , não continua o comando

Lista completa das classes de caracteres do GNU Sed(POSIX)

  • [[:alnum:]] Alfabéticos e númericos [a-z A-Z 0-9]
  • [[:alpha:]] Alfabéticos [a-z A-Z]
  • [[:blank:]] Caractere em branco, espaço ou tab [ \t]
  • [[:cntrl:]] Caracteres de controle [\x00-\x1F\x7F]
  • [[:digit:]] Números [0-9]
  • [[:graph:]] Qualquer caractere visível(ou seja, exceto em branco) [\x20-\x7E]
  • [[:lower:]] Letras minúsculas [a-z]
  • [[:upper:]] Letras maiúsculas [A-Z]
  • [[:print:]] Caracteres visíveis (ou seja, exceto os de controle) [\x20-\x7E]
  • [[:punct:]] Pontuação [-!"#$%&'()*+,./:;?@[\\\]_{|}~].
  • [[:space:]] Espaço em branco [ \t\r\n\v\f]
  • [[:xdigit:]] Número hexadecimais [0-9 a-f A-F]

1 - Troca todas as palavras em um arquivo por outra

sed -i 's/palavra/outra/' arquivo.txt

2 - Imprime só a nona linha

sed -n '9p' arquivo.txt

3 - Imprime da sexta linha até a nona linha

sed -n '6,9p' arquivo.txt

4 - Deleta todas as lihas que contém a palavra string no arquivo

sed -i '/string/d' arquivo.txt

Conheça o Curso Completo de Expressões Regulares, clique aqui

5 - Coloca uma palavra no INÍCIO de cada linha

sed 's/^/palavra/' arquivo.txt

6 - Coloca uma palavra no final de cada linha

sed 's/$/palavra/' arquivo.txt

7 - Imprime só as linhas que COMEÇAM com a string ‘http’

sed -n '/^http/p' arquivo.txt

8 - Deleta só as linhas que COMEÇAM com a string ‘http’

sed -n '/^http/d' arquivo.txt

9 - Troca TODAS ocorrências da palavra “marcos”, “eric”, “camila” pela palavra “pinguim”

sed 's/marcos\|eric\|camila/pinguim/g' arquivo.txt

10 - Troca tudo que estiver ENTRE as palavras “Marcos” e “Eric” pela palavra “eles”, exemplo, o texto é:

“No sábado Marcos saiu de pra brincar de bicicleta com o Eric, mas não ficaram até tarde.” e ficará assim: “No sábado eles, mas não ficaram até tarde.”

sed 's/Marcos.*Eric/eles/' arquivo.txt

Customize Seu Pacote de Treinamentos

11 - Deleta linha em branco e altera o arquivo

sed -i '/^$/d' arquivo.txt

12 - Substitui “foo” por “bar” somente as linhas que contém “plop”

sed '/plop/s/foo/bar/g' arquivo.txt

13 - Substitui “foo” por “bar” exceto as linhas que contém “plop”

sed '/plop/!s/foo/bar/g' arquivo.txt

14 - Insere da Linha 2 a linha 7 o “#” no início de cada linha

sed '2,7s/^/#/' arquivo.txt

15 - Insere a palavra ‘NEW’ no início de cada linha, da linha 21 até a linha 28

sed -i '21,28s/^/NEW/' arquivo.txt

16 - Troca tudo entre as tags “<” e “>” pela palavra “CODIGO”:

sed 's/<[^>]*>/CODIGO/g' arquivo.txt

17 - Imprime somente a primeira ocorrência da linha com determinada string

sed -n '/dia/{p;q;}' arquivo.txt

18 - Inclue texto no final da linha 9

sed '9s/$/final da linha/' arquivo.txt

19 - Coloca todas as linhas em uma só

sed ':a;$!N;s/\n//;ta;' arquivo.txt

20 - Substitui a palavra “BELEZA” por “SIM” somente entre determinadas linhas

sed '3,6s/BELEZA/SIM/' arquivo.txt

21 - Apaga o que está entre a palavra “falou” e “segundo” ( delimitadores )

sed '/segundo/{/falou/{s/segundo.*falou//;t};:a;/falou/!{N;s/\n//;ta;};s/segundo.*falou/\n/;}' arquivo.txt

22 - Retira comandos HTML (tudo entre < e > )

sed 's/<[^>]*>//g' arquivo.txt

Curso Completo de Expressões Regulares na Udemy

Curso Completo de Sed Editor de Fluxo

23 - Apaga o 1o caracter da frase

sed 's/.//' arquivo.txt

24 - Apaga o 4o caractere da frase

sed 's/.//4' arquivo.txt

25 - Apaga os 4 primeiros caracteres

sed 's/.\{4\}//' arquivo.txt

26 - Apaga no mínimo 4 caracteres

sed 's/.\{4,\}//' arquivo.txt

27 - Apaga de 2 a 4 caracteres (o máx. que tiver)

sed 's/.\{2,4\}//' arquivo.txt

28 - Exemplos de intervalo

echo "aáeéiíoóuú" | sed "s/[a-u]//g"
áéíóú
echo "aáeéiíoóuú" | sed "s/[á-ú]//g"
aeiou

Era : http://www.com

Fica: <a href=”http://www.com”>http://www.com</a>

sed 's_\<\(ht\|f\)tp://[^ ]*_<a href="&">&</a>_' arquivo.txt

30 - Expressões Regulares com SED ( sed regex )

Este sed lê dados do arquivo.txt e apaga (comando d) desde a primeira linha, até a linha que contenha 3 números seguidos, jogando o resultado na tela. Se quiser gravar o resultado, redirecione-o para outro arquivo, não o próprio arquivo.txt .

sed '1,/[0-9]\{3\}/d' arquivo.txt

Apagar números

s/[0-9]\+//g' arquivo.txt

Imprime só linhas que contém PONTUAÇÃO

sed -n '/[[:punct:]]/p' arquivo.txt

Imprime só linhas que começam com Números

sed -n '/^[[:digit:]]/p' arquivo.txt

Formatando numero de telefone

temos um arquivo com os números de telefone assim:

7184325689
4333285236
1140014004
3633554488

Executando alguns desse modos de comando em SED:

Modo Neandertal

  • Substitui 2 caracteres “..” por “&” que é a saída da solicitação
  • Executa outro sed pra substituir 8 caracteres de novo pelo “&”

    Obs.: Precisa sempre escapar os parênteses “\(“ e “\)”

sed 's/../\(&\)/' arquivo.txt | sed 's/......../&-/' arquivo.txt

Modo Medieval

  • O mesmo do de cima, só pus o “{8}” pra marcar 8 caracteres “.”
  • Também precisa, SEMPRE, escapar as chaves “\{“ e “/}”
sed 's/../\(&\)/' arquivo.txt | sed 's/.\{8\}/&-/' arquivo.txt

Modo Moderno

Ao invés de jogar a saída, separei o comando com ponto-vírgula “;” e lancei outro sed “s”

sed 's/../\(&\)/;s/.\{8\}/&-/' arquivo.txt

Modo Pós-Moderno

Esse modo é pra entender o seguinte

  • O primeiro comando entre parênteses “\(..\)”
  • Depois separado por barra \
  • Lancei ou comando entre parênteses “\(.\{4\}\)”
  • A saída do primeiro comando vai pro barra 1 “\1”
  • E a do segundo comando pro barra 2 “\2”
  • Poderia ter também o barra 3, n, …
sed 's/\(..\)\(.\{4\}\)/(\1)\2-/g' arquivo.txt

Fica assim:

(71)8432-5689
(43)3328-5236
(11)4001-4004
(36)3355-4488

Curso Completo de Expressões Regulares na Udemy

Curso Completo de Sed Editor de Fluxo

Assista um vídeo com 1o exemplos adicionais

http://www.gnu.org/software/sed/
http://sed.sourceforge.net/
http://thobias.org/doc/sosed.html
http://aurelio.net/sed
http://aurelio.net/sed/alfabeto.html
http://aurelio.net/sed/sed-dicas.txt
http://aurelio.net/sed/sed-HOWTO
http://goo.gl/U0Pbc9
http://goo.gl/gR59Fw


sed regex


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!