O que se pode fazer com o comando SED

Temos aqui alguns exemplos práticos e eficientes para o uso do comando (linguagem) SED que podemos usar na linha de comandos de um Terminal Linux ou mesmo do Mac.

O SED realmente é muito útil e aqui demonstramos como:

O SED é muito mais que um comando, ainda que muitos o consideram assim porque na maioria das vezes sua sintaxe ocupa apenas uma linha, no entanto, o SED é uma “pequena” linguagem para edicäo de textos já que conta com comandos e modos para realizar saltos condicionais. Um comando no SED é apenas uma letra!

No início, o SED assusta um pouco, porém com o decorrer do uso, você acaba se “apaixonando” por essa ferramenta ao descobrir o quanto ela é potente e útil para o seu trabalho. Faremos mais artigos aqui e no blog www.runbash.wordpress.com ensinando o passo-a-passo do uso dessa e de outras ferramentas.

Neste post procuramos colocar as coisas para que se possa entender melhor como funciona e como usar o comando ou linguagem SED.

Mais de 30 exemplos úteis do SED :
***********************************

Formato:

COMO FAZER UMA SUBSTITUICÃO SIMPLES NO SED (Comando S):

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)

— 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: “Joao,,,,,,,,” para: “Joao,”

— Substitui apenas entre as linhas 3 e 6:

sed ‘3,6s/dia/noite/’

— Substitui apenas a(s) linha(s) que contém certo padräo:

sed ‘/Pedro/s/solteiro/casado/’ cadastro.csv

— NÄO substitui nas linhas onde aparece a palavra “terceiro”:

sed ‘/terceiro/!s/dia/noite/g’

 

COMO IMPRIMIR LINHAS NO SED (comando p):

— 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      #    , (Vírgula) 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)

COMO DELETAR LINHAS NO TEXTO USANDO O SED:

— Apaga determinada linha:

sed ‘2d’ contatos

— Apagar linhas em BRANCO:

sed ‘/^$/d’ arquivo

Como 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

Como usar variáveis no SED:

sed ‘s/’$var’/tarde/g’ arquivo.txt

# Isso acima 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.

Helio Giroto

FONTE: https://raw.githubusercontent.com/HelioGiroto/Tutorial-SED/master/Exemplos-SED.txt

___________________________________________

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/

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s