Artigos‎ > ‎Ferramentas de Sistema‎ > ‎

Uso do comando sed


Primeiramente gostaria de salientar que não sou o autor principal do conteúdo deste artigo. A minha intenção é de mostrar o que outros autores tem realizado (referenciando links para o conteúdo original) neste blog até como um guia pessoal para uso próprio e ainda compartilhar minhas anotações e pequenas modificações que realizo no conteúdo, desejando que possa ajudar mais alguém em algum lugar.
First and foremost, I take no credit for any of this post’s content. I am really just taking what others have done (which I have links to bellow) and am putting it on my blog for a personal reference and hopefully the small changes that I made to their guides will help someone somewhere.


Link: http://www.zago.eti.br/script/sed.html

Alguns exemplos do link:
substituir palavra dentro de arquivo

 sed "s/stringoriginal/stringtroca/g" arquivooriginal > arquivotroca
       |     |             |        |      |              |
       |     |             |        |      |              |_arquivo modificado
       |     |             |        |      |_ arquivo original permanece inalterado
       |     |             |        |_ aplicar em todas ocorrencias do arquivo
       |     |             |__ nova palavra ou frase que substituirá string original
       |     |___palavra ou frase a ser substituida 
       |____ s = substituir
Caracteres especiais requer uma \ antes do simbolo para não ser interpretado pelo shell, exemplo na troca de todos os .(ponto) por _(underline).
sed "s/\./_/g" arquivooriginal > arquivotroca

sed -e "s/\/zago/\/backup\/docs/" /tmp/teste/backup.sh
Com -e pode incluir expressções como final de linha $, inicio de linha ^ e etc..
Combinar palavra com inicio ou final de linha
^ indica inicia de linha ^palavra trata somente palavra no inicio da linha, ignora a mesma palavra nas demais partes da linha.
$ indica final de linha palavra$ trata somente palavra no final da linha, ignora a mesma palavra nas demais partes da linha.

Redirecinar a saida para outro arquivo como nos exemplos acima ou com a diretiva -i (in place) para alterar no proprio arquivo.
sed -i "s/stringoriginal/stringtroca/g" arquivo

Incluir no inicio de todas as linhas do documento

  sed 's/^/texto adicionado/'
  
  sed -i 's/^/texto adicionado/' meuarq.txt
  
  Incluir um TAB para manter o formato na conversão em HTML pelo txt2tags
  
  sed -i 's/^/\t/' meuarq.txt

editar linha especifica do texto

sed -i "3s/^./1/" /tmp/sl101dvd/media.1/media
       |  || |  |           |              |_arquivo que vai aplicar a modificação
       |  || |  |           |_caminho do arquivo a ser modificado
       |  || |  |_ alteração a ser efetuada, novo caracter ou conteúdo da linha
       |  || |_inicio da linha
       |  ||__ s = substituir 
       |  |___3 indica a linha para aplicar alteração, somente esta será afetada
       |____aplicar alteração no próprio arquivo

Apagar linha

Limpando as linhas em branco com sed, linhas em branco sem espaços, (^$) pega somente as linhas com sinal de fim de linha ($) no inicio da linha (^), ou seja, linha em branco, inicia com final de linha.
sed '/^$/d' squid.conf > squid.conf-sed
sed '/^$/d;' squid.conf > squid.conf-sed
Com espaços na linha em branco
cat arq.txt | sed '/^ *$/d' > arqlimpo.txt
Remover linhas que inicial com tab, utilizo nos resultados do comando diff em duas colunas.
cat /tmp/arqtmp.txt | sed '/^\t/d' > /tmp/arqlimpo.txt
Eliminar a primeira linha do arquivo:
sed 1d teste > testesemlinha1 ou sed -i 1d teste
Eliminar a ultima linha de uma arquivo:
sed '$d' teste > testesemultimalinha
Eliminar as ultimas 9 linhas de uma arquivo:
sed -i -e :a -e '$d;N;2,9ba' -e 'P;D' teste.txt

aplicar diversos comandos sed no mesmo arquivo

 #!/bin/bash
  for i in $( cat arqlista );do
    # exibir o nome do arquivo sendo processado
     echo $i
    # apagar da linha 1 até a 22
    sed -i '1,22d' "$i"
    # depois apaga a linha 2 e 3
    sed -i '2,3d' "$i"
    # apagar todas as linhas que contem "As partes desta mensagem"
    sed -i '/As partes desta mensagem/Id' "$i"
    # apagar as ultimas 9 linhas
    sed -i -e :a -e '$d;N;2,9ba' -e 'P;D' "$i"
  done




O URL específico do gadget não foi encontrado



Comments