[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
- RES: RES: [shell-script] Variaveis no sed,
Julio Cezar Neves - DATAPREVRJ <=