-----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-----
