-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/21/2010 07:35 PM, Alexandre Gorges wrote: > Lista, > Recebo alguns dados separados por | e da forma que eu fiz está funcionando > sem nenhum problema. Meu interesse é mais para saber se existe uma forma > mais fácil de executar a operação. > > Meu script > > Recebo dados os dados: > > Exe|zip|wmv .... > > #trocar | por espaco > troca_pipe(){ > echo "$*" | tr '|' ' ' > } > > anexos="$(troca_pipe $2)" > > Passa os dados para exe zip wmv .... > > echo "$anexos" | awk '{ OFS = "\n"; $1 = $1; print $0}' | while read ext; do > ..... Insere os dados com sed em um arquivo. > done
Uma coisa que eu acho bárbara é o IFS. Digamos que você faça algo assim OLDIFS=${IFS} IFS="|" echo "exe|zip|wmv" | while read EXT ; do echo $EXT done IFS=$OLDIFS Além disso, imaginando que você tenha um arquivo com vários registros separados por |, você pode fazer algo assim: OLDIFS=${IFS} IFS="|" cat arquivo | while read LINHA ; do set - $LINHA echo $1 echo $2 echo $3 done IFS=$OLDIFS O set - vai separar a sua linha em campos automagicamente. - -- Um abraço .0. MrBiTs - mrbits....@gmail.com ..0 GnuPG - http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB 000 http://www.mrbits.com.br -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iQEcBAEBCAAGBQJLgbpmAAoJEG7IGPwrPKWra+oH/3yVrONc+p+pDIv0cubNYYNx AoF+fMsxM/Kmng+qHTMuehvmqbKdMI+CV8jc0vVxHdySfQne28JO8Q1gu4nDYcYO iPLqJOPhHzhxBhGZwNb1tSj/BaaSYWZ3oNTE/KikaPxXMjpAOrus5H7K5q7QmLZt 3qjjN7rHoHee4H94vkB/G/onWgd5d+dudGOHBJuAwGajAqlz0Cj7lIfhpB57zq/g 5P2oOiapMjhUiwCpgxodR4qQgCEHj/r6mbKkX6tcRsNd4Y335s05CpJnzpuxTkI2 j7dwdXjnJHCDYUrH87bBZGmVNtz/70AyzmoMy8/0+V25LS2vOeDFiP9QEfbQaD8= =iV29 -----END PGP SIGNATURE-----