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

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

RES: RES: [shell-script] Variaveis no sed


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: RES: [shell-script] Variaveis no sed
Date: Thu, 6 Jan 2005 11:04:32 -0300

Aê Max,
da 2ª forma que vc fez, deveria funcionar, veja:

Prompt> cat ArqDoDOS.txt1
Este arquivo
foi gerado pelo
DOS/Rwin e foi
baixado por um
ftp mal feito.
Prompt> a=1
Prompt> b=2
Prompt> sed "s/o/$a $b/g" ArqDoDOS.txt1
Este arquiv1 2
f1 2i gerad1 2 pel1 2
DOS/Rwin e f1 2i
baixad1 2 p1 2r um
ftp mal feit1 2.
Prompt> cat ArqDoDOS.txt1 | sed "s/o/$a $b/g"
Este arquiv1 2
f1 2i gerad1 2 pel1 2
DOS/Rwin e f1 2i
baixad1 2 p1 2r um
ftp mal feit1 2.

O que pode estar ocorrendo é que após a troca de $1 $2 por seus valores,
exista algum caractere com significado especial para o sed. Teste o seguinte
e me diga o que ocorreu, pq se funcionar eu explico o que fiz:

Prompt> eval sed "'s/zlib/"$1 $2"/g'" .installpath

[ ]s,
Julio
:wq

| -----Mensagem original-----
| De: Max Leandro Angelo [mailto:address@hidden]
| Enviada em: quinta-feira, 6 de janeiro de 2005 11:25
| Para: address@hidden
| Assunto: Re: RES: [shell-script] Variaveis no sed
| 
| 
| 
| Ola Julio!!
| 
| Muito obrigado pela explicacao:)
| 
| eu coloquei entre aspas as variaveis no comando do sed e nao funcionou
| cat .installpath | sed 's/zlib/"$1 $2"/g'
| 
| tentei assim tbm....
| cat .installpath | sed "s/zlib/$1 $2/g"
| mas ele me retorna um erro
| sed: -e expression #1, char 14: Unknown option to 's'
| 
| Sera q eu naum to conseguindo aplicar no meu exemplo, o 
| conhecimento, da 
| maneira correta? pode me dar um exemplo usando o sed, por favor? :)
| 
| obrigado!!
| 
| []'s
| 
| Julio Cezar Neves - DATAPREVRJ wrote:
| 
| >Usando aspas, apóstrofos e barra invertida
| >Para usar literalmente um caractere especial sem que o Shell 
| interprete seu
| >significado, coloque o caractere entre aspas ou entre 
| apóstrofos ou coloque
| >uma barra invertida antes dele. Seus usos característicos 
| são melhores
| >definidos assim:
| >*    Aspas - Quando se coloca um caractere especial entre 
| aspas, o Shell
| >ignora o seu significado, exceto no caso deste caractere ser 
| um cifrão ($),
| >uma crase (`), ou uma barra invertida(\).
| >*    Apóstrofos - Os apóstrofos são mais restritivos. Todos 
| os caracteres
| >entre apóstrofos são ignorados.
| >*    Barra Invertida - O Shell ignora um e somente um 
| caractere que segue
| >a barra invertida. Quando colocada ao final da linha, o 
| Shell interpreta a
| >barra invertida como um aviso de continuação da linha, 
| devolvendo um prompt
| >secundário (PS2) na linha seguinte da tela. Mas, note bem, 
| isto ocorre
| >porque o <ENTER> não foi visto pelo Shell por estar seguindo 
| a contra barra.
| >                             Se você for criativo, 
| descobrirá muitos usos
| >para a barra invertida.Vejamos um unalias imediato: suponha 
| que você tenha
| >feito: alias rm='rm -i', caso você execute: \rm <arq>, o 
| arquivo <arq> será
| >removido sem solicitar a confirmação, porque quando você colocou a
| >contrabarra (\), você escondeu da interpretação do Shell o r 
| do comando rm,
| >então ele não executou o alias.
| >Exemplos:
| >$ echo *
| > Arq1 Arq2 ....
| >$ echo \\    A 1ª barra invertida inibiu a atuação da 2ª
| >\
| >$ echo \     O Shell  não viu o <ENTER> e
| >  
| >
| >> <^c>       devolveu um prompt secundário (>)
| >>    
| >>
| >$ echo "\"   As aspas não inibem a interpretação da \
| >  
| >
| >><^c>
| >>    
| >>
| >$ echo Estou escrevendo uma linha compacta.
| >Estou escrevendo uma linha compacta
| >$ echo Assim    não   se       escreve    uma    linha    espacejada.
| >Assim não se escreve uma linha espacejada.   Os brancos são
| >significativos para o Shell
| >$ echo  "Estou     escrevendo   uma       linha     espacejada."
| >Estou     escrevendo   uma       linha     espacejada.
| >
| >Então, conforme você viu, para que as variáveis sejam 
| interpretadas pelo
| >shell, é necessário que elas estejam entre aspas e não entre 
| apóstrofos.
| >
| >Julio 
| >:wq
| >
| >| -----Mensagem original-----
| >| De: Max Leandro Angelo [mailto:address@hidden]
| >| Enviada em: quinta-feira, 6 de janeiro de 2005 10:45
| >| Para: address@hidden
| >| Assunto: [shell-script] Variaveis no sed
| >| 
| >| 
| >| 
| >| Ola
| >| 
| >| Estou fazeendo uma funcao q o valor recebe duas variaveis e 
| >| insere num 
| >| comando sed, mas o sed, naum reconhece minhas variaveis, pq 
| >| sua sintaxe 
| >| fica entre ''.... como posso usar variaveis em uma sintaxe no sed??
| >| 
| >| meu script eh o seguinte:
| >| 
| >| #./bin/bash
| >| 
| >| addpath_install ()
| >|         {
| >|                 case $1 in
| >|                   zlib)  cat .installpath | sed 's/$1/$(echo 
| >| $1 \t $2/g' 
| >|  > teste ;;
| >|                 esac
| >|         }
| >| 
| >| addpath_install zlib /usr/local
| >| 
| >| --------------------------------------------------------------
| >| --------------------------------
| >| 
| >| Minha ideia, eh verificar qual o nome da biblioteca (zlib) que foi 
| >| informado, e inserir o caminho informado na segunda variavel, 
| >| dentro do 
| >| arquivo .installpath, substiuindo a linha inteira onde estava 
| >| a primeira 
| >| variavel, pelo conjunto formado pela primeira variavel + 
| >| segunda variavel :)
| >| 
| >| Esse script somente elimina a primeira variavel, q estah na 
| >| linha... eu 
| >| queria uma q apagasse a linha, e inserisse o conjunto... :(
| >| 
| >| -- 
| >| Max Leandro Angelo
| >| Suporte Tecnico
| >| SoftExpert Quality Software
| >| +55 (47) 2101-9900
| >| http://www.softexpert.com
| >| 
| >| 
| >| 
| >| 
| ---------------------------------------------------------------------
| >| Esta lista não admite a abordagem de outras liguagens de 
| >| programação, como perl, C etc. Quem insistir em não seguir 
| >| esta regra será moderado sem prévio aviso.
| >| 
| ---------------------------------------------------------------------
| >| Sair da lista: address@hidden
| >| 
| ---------------------------------------------------------------------
| >| Esta lista é moderada de acordo com o previsto em 
| >http://www.listas-discussao.cjb.net
| >---------------------------------------------------------------------
| > 
| >Links do Yahoo! Grupos
| >
| >
| >
| >
| > 
| >
| >
| >
| >
| >---------------------------------------------------------------------
| >Esta lista não admite a abordagem de outras liguagens de 
| programação, como perl, C etc. Quem insistir em não seguir 
| esta regra será moderado sem prévio aviso.
| >---------------------------------------------------------------------
| >Sair da lista: address@hidden
| >---------------------------------------------------------------------
| >Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
>---------------------------------------------------------------------
> 
>Links do Yahoo! Grupos
>
>
>
>
> 
>
>
>
>
>  
>

-- 
Max Leandro Angelo
Suporte Tecnico
SoftExpert Quality Software
+55 (47) 2101-9900
http://www.softexpert.com



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



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 




reply via email to

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