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.
-i
altera o arquivo-e
imprime na tela sem alterar o arquivo-n
faz a supressão, mostra só o resutado do comandos
substitui um trecho de texto por outro!
inverte a lógica do comando;
separador de comandos|
separador de stringsd
no final deletap
no final imprimeg
no final (como se usa o d e p) altera todas as ocorrênciasq
sai do sed , não continua o comando[[: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]sed -i 's/palavra/outra/' arquivo.txt
sed -n '9p' arquivo.txt
sed -n '6,9p' arquivo.txt
sed -i '/string/d' arquivo.txt
sed 's/^/palavra/' arquivo.txt
sed 's/$/palavra/' arquivo.txt
sed -n '/^http/p' arquivo.txt
sed -n '/^http/d' arquivo.txt
sed 's/marcos\|eric\|camila/pinguim/g' arquivo.txt
“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
sed -i '/^$/d' arquivo.txt
sed '/plop/s/foo/bar/g' arquivo.txt
sed '/plop/!s/foo/bar/g' arquivo.txt
sed '2,7s/^/#/' arquivo.txt
sed -i '21,28s/^/NEW/' arquivo.txt
sed 's/<[^>]*>/CODIGO/g' arquivo.txt
sed -n '/dia/{p;q;}' arquivo.txt
sed '9s/$/final da linha/' arquivo.txt
sed ':a;$!N;s/\n//;ta;' arquivo.txt
sed '3,6s/BELEZA/SIM/' arquivo.txt
sed '/segundo/{/falou/{s/segundo.*falou//;t};:a;/falou/!{N;s/\n//;ta;};s/segundo.*falou/\n/;}' arquivo.txt
sed 's/<[^>]*>//g' arquivo.txt
sed 's/.//' arquivo.txt
sed 's/.//4' arquivo.txt
sed 's/.\{4\}//' arquivo.txt
sed 's/.\{4,\}//' arquivo.txt
sed 's/.\{2,4\}//' arquivo.txt
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
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
temos um arquivo com os números de telefone assim:
7184325689
4333285236
1140014004
3633554488
Executando alguns desse modos de comando em SED:
Obs.: Precisa sempre escapar os parênteses “\(“ e “\)”
sed 's/../\(&\)/' arquivo.txt | sed 's/......../&-/' arquivo.txt
sed 's/../\(&\)/' arquivo.txt | sed 's/.\{8\}/&-/' arquivo.txt
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
Esse modo é pra entender o seguinte
sed 's/\(..\)\(.\{4\}\)/(\1)\2-/g' arquivo.txt
(71)8432-5689
(43)3328-5236
(11)4001-4004
(36)3355-4488
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