shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Alteração de campos individualmente.


From: Fernando Luizao
Subject: Re: [shell-script] Alteração de campos individualmente.
Date: Mon, 18 Jan 2010 11:15:24 -0800 (PST)

Algumas idéias:

a='#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#'


Teste se a string contém '#', se não tiver, acabamos. Pode usar  isso em um 
laço:

echo $a | grep '#'

Substituindo a primeira ocorrência do que está entre '#' por '*'

echo $a | sed 's/#[^#]*#/*/'

Removendo as duas primeiras ocorrências do caracter '#'

a=`echo $a | sed 's/#//1; s/#//1'`

Juntando tudo isso acredito que resolva o problema =)

Um esboço (não testado):

while echo $a | grep '#' > /dev/null
do
    echo $a | sed 's/#[^#]*#/*/'
    a=`echo $a | sed 's/#//1; s/#//1'`
end

Abraço

--- Em seg, 18/1/10, mikoazul <address@hidden> escreveu:

De: mikoazul <address@hidden>
Assunto: [shell-script] Alteração de campos individualmente.
Para: address@hidden
Data: Segunda-feira, 18 de Janeiro de 2010, 14:36







 



  


    
      
      
      Pessoal,



Tive que recorrer à lista pois meu caso está bem complicado (pelo menos pra 
mim). Já tentei alguns comandos sed e outros awk, mas não consigo resolver o 
impasse.



Estou tentando transformar o arquivo "ENTRADA" nas várias saídas demonstradas 
abaixo. 



A idéia é ir pegando cada campo entre "#" e substituí-lo com * (por exemplo). O 
detalhe é que em cada linha tem-se um resultado diferente. Ou seja, ele vai 
tratando o próximo campo e automaticamente "destratando" o anterior. Ou seja a 
idéia é tratar um campo por vez. 



Se tiver alguém inspirado hoje e que puder me ajudar eu agradeço desde já. 



Vamos aos detalhes:



Entrada:

#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#.



Saidas:

* de script. Teste de script2. Ultimo teste de script3.

Teste de *. Teste de script2. Ultimo teste de script3.

Teste de script. Teste de *. Ultimo teste de script3.

Teste de script. Teste de script2. * teste de script3.

Teste de script. Teste de script2. Ultimo teste de *.



Tentei com o sed e o máximo que consegui foi:



cat ENTRADA | sed 's/^\(\([^#] *#\)\{1,2\ }\)0*/*/'



Saída:

* de #script#. Teste de #script2#. #Ultimo# teste de #script3#.



Grato desde já.





    
     

    
    


 



  






      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]