Mais exemplos SED ***************** Formato: sed 'Ys///X' nome_arq Y = número da linha (se omitido é = todas). X = número da ocorrência em cada linha. --- Substitui apenas na primeira linha: sed '1s/,/ /g' contatos --- Substitui apenas na última linha: sed '$s/,/ /g' contatos --- Subtitui apenas primeira ocorrencia de cada linha: sed 's/,/ /1' contatos sed 's/,/ /' contatos #(tb o mesmo! Se omite o núm) --- Substitui os 4 primeiros caracteres (seja o que for) em cada linha: sed 's/.\{4\}//' texto.txt sed 's/-\{2\}//' datas.txt # Apaga os 2 primeiros traços (-) de cada linha. --- Coloca pontos decimais num número: echo 12345678 | rev | sed -E 's/.{3}/&./g' | rev echo 123456789 | rev | sed 's/.../&./g' | rev # + Simplificado que acima? echo 123456789 | rev | sed 's/.../&./g' | rev | sed 's/^\.//' # Tira o 1o. ponto de: .123.456... echo 123456789 | rev | sed 's/.../&./g; s/\.$//' | rev # Efeito igual. --- Converte string (frase) para minúscula: sed 's/./\L&/g' <<< "Now is the Time" --- Converte string (frase) para MAIÚSCULA: sed 's/./\U&/g' <<< "Now is the Time" --- Converte string (frase) para MAIÚSCULA apenas primeiras letras de cada palavra: sed -r 's/\w+/\u&/g' <<< "Now is the time" *(NAS CONVERSÕES ACIMA SE PODE OMITIR O COMANDO g PARA TESTAR!). --- Acrescenta texto na primeira linha: seq 7 | sed '1s/^/Hola\n/' --- Acrescenta texto na última linha: seq 7 | sed '$s/$/\nHola/' --- Acrescenta texto na primeira linha usando a flag i\ sed '1i\HOLA ' arquivo.txt --- Acrescenta texto na última linha usando a flag a\ sed '$a\HOLA ' arquivo.txt ... Acrescenta uma linha no meio do arquivo (p.ex. na linha 8): sed '8i\Acrescentei essa linha 8 aqui' lista.txt # A linha que antes era 8 passará a ser a 9. --- Substitue uma linha inteira (Cambia, flag C\) - ao invés de "empurrar" para baixo ou para cima: sed '3c\ Esta agora será a linha terceira' lista --- Retira varias vírgulas para apenas uma: sed -r 's/(,)+/,/g' contactos.csv Resultado: De: "Colombe,,,,,,,," para: "Colombe," --- Substitui apenas entre as linhas 3 e 6: sed '3,6s/dia/noite/' --- Substitui apenas as linhas que contém certo padräo: sed '/Pedro/s/solteiro/casado/' cadastro.csv --- Substitui usando OR (OU): Se encontrar isso OU aquilo: sed 's/marcos\|eric\|camila/pinguim/g' --- NÄO substitui nas linhas onde aparece a palavra "terceiro": sed '/terceiro/!s/dia/noite/g' --- Imprime determinada linha: sed -n '2p' contatos --- Imprime linha 2 do arquivo contatos. --- Imprime a primeira linha: sed -n '1p' contatos --- Imprime a última linha: sed -n '$p' contatos --- Imprime varias linhas: sed -n '3p; 9p; 11p' contatos --- Imprime de N° linha até a X° linha: sed -n '1,7p' contatos --- Imprime da N° linha até o final: sed -n '5,$p' contatos --- Imprime as N primeiras linhas (alternativa de head -8): sed '8q' arquivo.txt --- Imprime de tantas em tantas linhas: seq 10 | sed -n '1~2p' --- Linhas ímpares seq 10 | sed -n '2~2p' --- Linhas pares seq 70 | sed -n '0~7p' --- Somentes as múltiplas de 7 --- Imprime somente as linhas que contém um padräo: sed -n '/jose/p' contatos --- Näo funciona sed -n '/jose/Ip' contatos --- Agora tem I-nsensive Case sed -n '/Jose/!p' contatos --- Excluindo as que têm o padräo. --- Imprime as linhas que contenham padrao1 OU padrao2: sed -n '/jose\|casa/Ip' contatos --- Imprime linhas que contenham a palavra "jose" (Insensitive Case) OU "casa" --- Imprime das que têm o padräo ATÉ o final: sed -n '/Jose/,$p' contatos --- , sign. até. sed -n '1,/Jose/p' contatos --- Da 1a. linha até a palavra José seq 10 | sed -n '/5/,+3p' --- Desde onde encontra "5" até MAIS 3 linhas (total 4 linhas). --- imprime tudo o que estiver ENTRE um padräo ATÉ outro: seq 100 | sed -n '/33/,/44/p' --- inclui os dois padröes (33 e 44) --- Parse de email num texto: sed 's/ /\n/g' num_texto.txt | grep '@' --- Apaga determinada linha: sed '2d' contatos --- Apagar linhas em BRANCO: sed '/^$/d' arquivo --- Acrescentar linhas em BRANCO num arquivo: sed G arquivo sed 'G;G' arquivo # Acrescenta 2 linhas em branco entre cada linha. seq 10 | sed G --- Usando variáveis no SED: sed 's/'$var'/tarde/g' arquivo.txt # Isso nada + eh que concatenaçao na linha de comando. sed 's/'"$var"'/tarde/g' arquivo.txt # Caso haja problema por conter espaço na variavel. # Autor: Helio Giroto ver tb: "http://www.theunixschool.com/2012/12/sed -10-examples-to-print-lines-from-file.html" "http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-printing-file-lines-using-address-and-patterns" https://likegeeks.com/sed-linux/ --- !!!! http://www.catonmat.net/blog/sed-one-liners-explained-part-two/ https://jinetedeldragon.wordpress.com/2009/06/22/sed-en-una-linea-sed-one-liners-parte-i/ http://www.thegeekstuff.com/category/sed/ https://www.tutorialspoint.com/sed/sed_strings.htm a ver: https://www.tecmint.com/linux-sed-command-tips-tricks/