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

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

Re: [shell-script] entendeno saidas do sed + bash!


From: # aurelio marinho jargas
Subject: Re: [shell-script] entendeno saidas do sed + bash!
Date: Wed, 10 Jul 2002 13:56:49 -0300 (ART)

oi ulysses,

> ls *3 |sed -e '/demanufacture/I!d;s/\( \|(\|)\)/\\\1/g'
> i.e.
> Fear\ Factory\ -\ Demanufacture\ -\ 03\ -\ Zero\ Signal.mp3
> Fear\ Factory\ -\ Demanufacture\ -\ 06\ -\ Dog\ Day\ Sunrise\ \(1\).mp3
> 
> Agora, se uso um echo antes!
> echo `ls *3 |sed -e '/demanufacture/I!d;s/\( \|(\|)\)/\\\1/g'`
> Já bagunca tudo a saida!
> i.e.
> Fear\1Factory\1-\1Demanufacture\1-\103\1-\1Zero\1Signal.mp3
> Fear\1Factory\1-\1Demanufacture\1-\106\1-\1Dog\1Day\1Sunrise\1\11\1.mp3
> 
> para concertar, somente se eu usar o comando!
> echo `ls *3 |sed -e '/demanufacture/I!d;s/\( \|(\|)\)/\\\\\1/g'`

você acaba de cair na pegadinha dos escapes do bash &;)

 
>   Pq tenho que multiplicar os "\" qndo usa os "`".

por que a cada "passada" do bash, ele vai ripando alguns caracteres, neste
caso, trocando \\ por \. como o ` indica uma subshell, ele vai dar essa
ripada
de novo nessa subshell.

> Como faco para saber, sem precisar ficar testando, qntos "\" preciso por
> para escapar um caracter!!!

contando! parece brincadeira, mas é ou isso ou botar um echo na frente e
ver
como fica.

veja:

# echo "\\\\\\\\"
\\\\
# echo `echo "\\\\\\\\"`
\\
# echo $(echo "\\\\\\\\")
\\\\
# echo $(echo $(echo "\\\\\\\\"))
\\\\


mmmmmm, essa eu não sabia: o $() não faz escape.
então uma solução rápida é usar o $() ao invés do ``

eu particularmente simplesmente vou colocando e tirando as \ até a hora
que
funciona, sem realmente entender quem ou quantos escapes foram feitos &:)


>   Se eu usar o mpg123 ao inves do echo, o mpg123 me fala que nao pode
> tocar a musica "Fear\". Se eu tou usando o "\", nao era para estar
> escapando o " "da frente? Nao? pq?

não, porque ao chamar o 'Fear\ ' na linha de comando, você está dizendo ao
bash que sim, seu arquivo tem a \ no nome. basta chamar diretamente, sem
precisar escapar nada, e entre aspas:

   mpg123 "meu arquivo com espaços.mp3"


>   Caso eu queira por um "\" na frente de um "'" como faria isso com a
> mesma linha, pois nao posso escapar o ' qndo uso sed -e '', mas se uso
> sed -e "", ae nao posso usao o "!".

você pode juntar as aspas, colocando "" apenas em volta do '. por exemplo
pra trocar aa'bb por aa_bb:


# echo "aa'bb" | sed 's/aa'"'"'bb/aa_bb/'
aa_bb

ou apenas escapar o ' que ficou sozinho:

# echo "aa'bb" | sed 's/aa'\''bb/aa_bb/'
aa_bb

note que aqui o sed tem 3 conjuntos de strings:

    sed 's/aa'"'"'bb/aa_bb/'

        's/aa'
              "'"
                 'bb/aa_bb/'

começa com aspas simples, fecha, depois aspas duplas para conter o ',
fecha
e o resto volta pra aspas simples. o sed mesmo vai receber apenas a string
s/aa'bb/aa_bb/, pois é o bash quem faz as firulas todas com as aspas.

ou em último caso, bota o sed num arquivo.sed e não precisa se preocupar
em
escapar absolutamente nada &:)


>   Claro que nao eh um problema muito serio, mas gostaria de enteder
> melhor essas "saídas" te textos!!

este problema atual pode não ser "sério", mas este esquema de aspas e
subshell realmente dá um nó na cabeça &:)


=====
-- 
http://verde666.org s/click/^a]/;^[:wq

_______________________________________________________________________
Yahoo! Encontros
O lugar certo para encontrar a sua alma gêmea.
http://br.encontros.yahoo.com/

From (no email address) Wed Jul 10 16:14:49 2002
Return-Path: <address@hidden>
Received: (qmail 37386 invoked by uid 7800); 10 Jul 2002 23:14:48 -0000
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-8_0_7_4); 9 Jul 2002 19:48:43 -0000
Received: (qmail 45558 invoked from network); 9 Jul 2002 19:48:42 -0000
Received: from unknown (66.218.66.216)
  by m9.grp.scd.yahoo.com with QMQP; 9 Jul 2002 19:48:42 -0000
Received: from unknown (HELO phoenix.piq.com.br) (200.180.150.6)
  by mta1.grp.scd.yahoo.com with SMTP; 9 Jul 2002 19:48:43 -0000
Received: from servidor (servidor.portalch.com.br [200.180.150.7])
        by phoenix.piq.com.br (8.12.2/8.12.2) with ESMTP id g69JpCFu009333
        for <address@hidden>; Tue, 9 Jul 2002 16:51:12 -0300
MIME-Version: 1.0
Message-Id: <address@hidden>
Date: Tue, 9 Jul 2002 16:50:06 -0300 (Hora oficial do Brasil)
X-Mailer: IncrediMail 2001 (1750690)
References: <001701c22774$627f6180$address@hidden>
X-FID: FLAVOR00-NONE-0000-0000-000000000000
X-FVER: 
X-CNT: ;
X-Priority: 3
To: <address@hidden>
Subject: 
=?iso-8859-1?B?UmVzOiBbc2hlbGwtc2NyaXB0XSBDb25leONvIFNpbXVsdGFuZWEhISE=?=
        
X-eGroups-From: "Anderson Onir" <address@hidden>
From: "Anderson Onir" <address@hidden>
X-Yahoo-Group-Post: member; u=114582984
X-Yahoo-Profile: master_of_wyzards
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-eGroups-Approved-By: eriberto_mota <address@hidden> via email; 10 Jul 2002 
23:14:48 -0000

=0D
dah uma olhada no Exec-Program-Wait !=0D
=0D
[]'s=0D
Anderson Onir=0D
Megavia Transmissao de Dados=0D
=0D
-------Mensagem original-------=0D
=0D
De: address@hidden=0D
Data: Tuesday, July 09, 2002 15:17:46=0D
Para: address@hidden=0D
Assunto: [shell-script] Conex=E3o Simultanea!!!=0D
=0D
Caro Amigos da Lista;=0D
=0D
estou prescisando de um script que evite conex=F5es simultaneas,=0D
utilizo o radius-cistron1.6.6 para autentica=E7=E3o sobre slack, j=E1 tente=
i no=0D
simultaneous-users e nada no arquivo de configura=E7=E3o do radius, alguem=
=0D
poderia me ajudar???=0D
=0D
=0D
obrigado=0D
[]=B4s=0D
=0D
=0D
=0D
=0D
=0D
---------------------------------------------------------------------=0D
Esta lista n=E3o admite a abordagem de outras liguagens de programa=E7=E3o,=
 como
perl, C etc. Quem insistir em n=E3o seguir esta regra ser=E1 moderado sem p=
r=E9vio
aviso.=0D
---------------------------------------------------------------------=0D
Sair da lista: address@hidden=0D
---------------------------------------------------------------------=0D
Esta lista =E9 moderada de acordo com o previsto em http://www.listasdiscus=
sao
cjb.net=0D
---------------------------------------------------------------------=0D
=0D
=0D
Seu uso do Yahoo! Grupos =E9 sujeito =E0s regras descritas em: http://br.ya=
hoo
com/info/utos.html =0D
=0D
=0D
.

[As partes desta mensagem que n=E3o continham texto foram removidas]



reply via email to

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