Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Curso de Inglês Online

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Global Replace

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 20 de Maio de 1997

Este shell script pode vir a ser útil. O que ele faz é simplesmente trocar todas as ocorrências de determinado string por uma outra em uma número de arquivos especificados na linha de comando, aceitando inclusive wildcards.

Por exemplo, o comando

  % repl rubens joao *

substituiria todas as ocorrências de "rubens" por "joao" em todos os arquivos do diretório corrente.

Além disto, este shell script aborda alguns pontos interessantes com relação à programação shell.

O código da shell foi comentado para esclarecer as técnicas de programação.

  
  #! /bin/sh
  
  # Teste para verificar se todos os argumentos foram passados
  # na linha de comando (mínimo de 3, duas strings (de, para) e
  # nome(s) do(s) arquivo(s). Se nao, sai e envia mensagem de erro
  
  if [ $# -lt 3 ]
  then
  	echo "Uso $0: DE-argumento PARA-argumento arquivos" >&2
  	exit 1
  fi
  
  # atribui à variável DE o valor da string a ser substituída
  # e desloca as variáveis ($3 passa a ser $2, $2 passa a ser $1)
  # O deslocamento das variáveis é feito com o comando shift
  
  DE=$1; shift
  
  # atribui à variável PARA o valor final da string 
  # $1 agora é o argumento de número 2, string destino.
  
  PARA=$1;   shift
  
  # Na entrada do laço, $1 representa o nome do primeiro arquivo
  # onde serão efetuadas as alterações
  
  until [ $# -eq 0 ]
  
  # Continua no laço até que o número de argumentos seja igual a zero
  # ou seja, até que não existam mais arquivos a serem processados.
  
  do
  # Testa a existência do arquivo
  	if [ ! -r $1 ]
  	then	echo "no file $1" >& 2;shift
  
  # A modificação nos arquivos é feita com o comando sed, que redireciona
  # a saída para um arquivo temporário, que irá possuir o nome do shell ($0)
  # seguido do número de identificação do processo ($$)
  
  	else 	sed -e "s/$DE/$PARA/g" $1 > /tmp/$0$$
  		mv /tmp/$0$$ $1;
  		echo "alteracoes efetuadas em $1" >&2
  		shift
  	fi
  done

Dica Humorística :-)

A produtividade de Schubert

Um executivo de uma companhia ganhou um convite para um concerto da Sinfonia Inacabada de Schubert. Como estaria impossibilitado de comparecer, passou o convite para o Gerente de MÚtodos e Procedimentos. Na manha seguinte, o executivo perguntou se ele tinha gostado e, ao inves de comentarios, recebeu o seguinte memorando :

1. Por um periodo consideravel de tempo, os musicos com oboe nao tinham nada para fazer. Sua quantidade deveria ser reduzida e seu trabalho redistribuido pela orquestra, evitando estes picos de inatividade. 2. Todos os doze violinos tocavam notas identicas. Isto parece ser uma duplicidade desnecessaria de esforcos. O contingente nesta secao deveria ser drasticamente cortado. Se um alto volume de som e requerido, isto pode ser obtido atraves de um amplificador. 3. Muito esforco foi envolvido em tocar semitons. Isto parece ser um preciosismo desnecessario e seria recomendavel que todas as notas fossem arrendondadas para o tom mais proximo. Se isto fosse feito, poder-se-ia utilizar estagiarios em vez de musicos profissionais. 4. Nao havia utilidade pratica em repetir com os metais a mesma passagem ja tocada pelas cordas. Se toda esta redundancia fosse eliminada, o concerto poderia ser reduzido de duas horas para apenas vinte minutos.

Sumarizando as observacoes anteriores, podemos concluir que, se Schubert tivesse dado um pouco mais de atencao a estes pontos, talvez tivesse tido tempo de acabar sua sinfonia.

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.90/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 2.9 /5 (1136 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Expressões Regulares - Uma abordagem divertida 3ª edição