Dani | 14 Dec 2010 14:57

Fwd: Una ayuda con Shell script

Hola! Ya lo he conseguido!


Al final lo he hecho con AWK, porque he pensado que era la forma más sencilla. Y hacerlo con vectores en shell iba a complicar el panorama bastante.


Oscar, el problema era que con el código que tenía escrito, me salía lo siguiente:

var=$(find . -ls)
echo $var
539646 4 drwxr-xr-x 2 dani dani 4096 jun 2 2010 . 526743 128 -rw-r--r-- 1 dani dani 128940 may 31 2010 ./AntiGnat.jar 526742 4 -rw-r--r-- 1 dani dani 328 may 31 2010 ./AntiGnat.jad
for a in $var; do echo $a; done
539646
4
drwxr-xr-x
2
dani
dani
4096
jun
2
2010
.
526743
128
-rw-r--r--
...
var=( `find . -ls` )
for a in ${var[ <at> ] }; do echo $a; done
539646
4
drwxr-xr-x
2
dani
dani
4096
...
echo ${#var[ <at> ]}
33


En fin, muchas gracias a todos por intentar ayudarme!!!

Dani

 


El 14 de diciembre de 2010 09:45, Oscar Aceña <oscaracena <at> gmail.com> escribió:

Mmm, a mi me vendría bien que nos explicaras con un ejemplo, qué es lo que obtienes y qué es lo que quieres :D

El 13 de diciembre de 2010 23:53, Dani <dani <at> azthe.com> escribió:
Hola a todos!



Soy nuevo y no sé si éste es el propósito de la lista. De todas formas, allá voy. Estoy realizando una práctica para una asignatura de la carrera y no encuentro la manera de salir de un problema. Debo escribir en Shell script un código que, dependiendo de las opciones que se le pase por argumentos, liste los archivos de un directorio (que también se pasa por argumentos). El problema que tengo es que al finalizar el listado, debe aparecer unas estadísticas sobre la frecuencia que aparecen directorios, tuberías, etc.

Mi forma de realizarlo es utilizando el comando Find y para hacer el apartado de las estadísticas paso a un array la información que devuelve find. El problema es que el texto que devuelve find no tiene ni tabulaciones ni saltos de linea; es más no es un array es un párrafo todo entero. ¿Cómo podría hacer para poder recorrer lo que me devuelve find linea por linea y siendo cada columna una posición del array?

Esta forma de hacerlo es lo primero que se me ha pasado por la cabeza, y llevo un montón de tiempo intentándolo hacer y no hay manera. He modificado la variable IFS, porque estuve leyendo en un foro que es el campo de separación y no consigo solucionar nada. Espero que alguien pueda darme algo de luz.


Un saludo,
Daniel

_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol




--
Oscar Aceña,
Computer Architecture and Networks Group
University of Castilla-La Mancha
http://arco.esi.uclm.es



<div>
<p>Hola! Ya lo he conseguido!<br></p>
<div class="gmail_quote">
<br>Al final lo he hecho con AWK, porque he pensado que era la forma m&aacute;s sencilla. Y hacerlo con vectores en shell iba a complicar el panorama bastante.<br><br><br>Oscar, el problema era que con el c&oacute;digo que ten&iacute;a escrito, me sal&iacute;a lo siguiente:<br><br><blockquote class="gmail_quote">

var=$(find . -ls)<br>
</blockquote>
<div>
<blockquote class="gmail_quote">echo $var<br>539646 4 drwxr-xr-x 2 dani dani 4096 jun 2 2010 . 526743 128 -rw-r--r-- 1 dani dani 128940 may 31 2010 ./AntiGnat.jar 526742 4 -rw-r--r-- 1 dani dani 328 may 31 2010 ./AntiGnat.jad<br>
</blockquote>
<div>
<blockquote class="gmail_quote">for a in $var; do echo $a; done<br>539646<br>4<br>drwxr-xr-x<br>2<br>dani<br>

dani<br>4096<br>jun<br>2<br>2010<br>.<br>526743<br>128<br>-rw-r--r--<br>
</blockquote>
<blockquote class="gmail_quote"><div>... <br>
</div></blockquote>
<div>
<blockquote class="gmail_quote">var=( `find . -ls` )<br>for a in ${var[ <at> ] }; do echo $a; done<br>539646<br>

4<br>drwxr-xr-x<br>2<br>dani<br>dani<br>4096<br>...<br>echo ${#var[ <at> ]}<br>33<br>
</blockquote>
<br>
</div>
<br>En fin, muchas gracias a todos por intentar ayudarme!!!<br><br>Dani<br>
</div>
<br>
</div>
<div>&nbsp;</div>
<br><br><div class="gmail_quote">El 14 de diciembre de 2010 09:45, Oscar Ace&ntilde;a <span dir="ltr">&lt;<a href="mailto:oscaracena <at> gmail.com" target="_blank">oscaracena <at> gmail.com</a>&gt;</span> escribi&oacute;:<div>
<div></div>
<div class="h5">
<br><blockquote class="gmail_quote">Mmm, a mi me vendr&iacute;a bien que nos explicaras con un ejemplo, qu&eacute; es lo que obtienes y qu&eacute; es lo que quieres :D<br><br><div class="gmail_quote">
<div>El 13 de diciembre de 2010 23:53, Dani <span dir="ltr">&lt;<a href="mailto:dani <at> azthe.com" target="_blank">dani <at> azthe.com</a>&gt;</span> escribi&oacute;:<br>
</div>
<blockquote class="gmail_quote">Hola a todos!<div>
<div></div>
<div>
<br><br><br>Soy nuevo y no s&eacute; si &eacute;ste es el prop&oacute;sito de la lista. De todas formas, all&aacute; voy. Estoy realizando una pr&aacute;ctica para una asignatura de la carrera y no encuentro la manera de salir de un problema. Debo escribir en Shell script un c&oacute;digo que, dependiendo de las opciones que se le pase por argumentos, liste los archivos de un directorio (que tambi&eacute;n se pasa por argumentos). El problema que tengo es que al finalizar el listado, debe aparecer unas estad&iacute;sticas sobre la frecuencia que aparecen directorios, tuber&iacute;as, etc. <br><br>Mi forma de realizarlo es utilizando el comando Find y para hacer el apartado de las estad&iacute;sticas paso a un array la informaci&oacute;n que devuelve find. El problema es que el texto que devuelve find no tiene ni tabulaciones ni saltos de linea; es m&aacute;s no es un array es un p&aacute;rrafo todo entero. &iquest;C&oacute;mo podr&iacute;a hacer para poder recorrer lo que me devuelve find linea por linea y siendo cada columna una posici&oacute;n del array?<br><br>Esta forma de hacerlo es lo primero que se me ha pasado por la cabeza, y llevo un mont&oacute;n de tiempo intent&aacute;ndolo hacer y no hay manera. He modificado la variable IFS, porque estuve leyendo en un foro que es el campo de separaci&oacute;n y no consigo solucionar nada. Espero que alguien pueda darme algo de luz.<br><br><br>Un saludo,<br>Daniel<br><br>
</div>
</div>
<div>_______________________________________________<br>
CRySoL mailing list<br><a href="http://crysol.inf-cr.uclm.es/" target="_blank">http://crysol.inf-cr.uclm.es/</a><br><a href="https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol" target="_blank">https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol</a><br><br>
</div>
</blockquote>
</div>
<br><br clear="all"><br>-- <br>Oscar Ace&ntilde;a,<br>Computer Architecture and Networks Group<br>University of Castilla-La Mancha<br><a href="http://arco.esi.uclm.es" target="_blank">http://arco.esi.uclm.es</a><br><br>
</blockquote>
</div>
</div>
</div>
<br>
</div>
<br>
</div>

Gmane