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

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

Re: [shell-script] Substituindo caracteres especiais.


From: MrBiTs
Subject: Re: [shell-script] Substituindo caracteres especiais.
Date: Wed, 14 Oct 2009 06:38:59 -0300

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Olá,
>
> Estou tentando utilizar o sed para substituir entradas em um arquivo de
> origem DOS que utiliza o carctere \ para separar os diretorios enquanto no
> unix utiliza-se / para tal.
>
> Como eh possivel transformar \carminho\para\arquivo\ em
> /carninho/para/arquivo com o sed??

Imagino que você esteja usando o sed com a / como separador dos seus
blocos. Se quiser seguir por esse caminho, faça algo como

echo "\caminho\para\arquivo" | sed -e 's/\\/\/g'
/caminho/para/arquivo

Usamos a própria \ para "escapar" a ela mesma e à /.

Isso, para mim, é uma leitura bastante natural. Algumas pessoas que já
pegaram uma época de comodidade podem ficar incomodadas com a
quantidade de barras. Então o sed ainda permite que você mude o seu
separador. Veja que fácil fica.

echo "\caminho\para\arquivo" | sed -e 's#\#/#g'
sed: -e expression #1, char 7: unterminated `s' command

Ele nos deu esse erro já que a \ é o caracter de escape que transforma
caracteres especiais em strings simples, sem efeito. O nosso \#
"matou" o #. Então, essa \ sempre deverá ser escapada:

 echo "\caminho\para\arquivo" | sed -e 's#\\#/#g'
/caminho/para/arquivo

MrBiTs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)

iEYEARECAAYFAkrVnCsACgkQrDdxWm3R8YYW2QCdEGt7xmzoo6uBLg2iv0yENJ/Z
+/MAn3qXJPBr0fGTxxhvhPvTlb1x3rgT
=ZM2F
-----END PGP SIGNATURE-----


reply via email to

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