Si hablan con cualquier administrador Unix potable y les mencionan AWK y SED va a hablarles maravillas de estas dos herramientas de linea de comando.
SED:
Se utiliza para el reemplazo y busqueda de expresiones en un stream y una vez que se le toma la mano (como a los reemplazos del vi) uno se vuelve adicto.
http://www.grymoire.com/Unix/Sed.html
AWK:
Leeeejos, pero leeeeeeeeeeeeejos ehhh. Lo mejor que puede haber para trabajar con linea de comando.
Con AWK tenes la oportunidar de moldear todo lo que salga a un stream de output a tu gusto.
Cualquier administrador sabe que no puede desconocer esta herramienta.
Doy un par de ejemplos simples que estoy usando ahora:
du *
16 commands
16 cvsstat.sh
16 file.test
16 file2.txt
16 menuutil.sh
16 test.sh
Lanza algo como esto.
Si quisiera obtener la primer columna para hacer sumas y asignar a alguna variable, tomo como separador al espacio y hago:
du * | awk '{print $1}'
Si quiero solo los nombres de archivo
du * | awk '{print $2}'
Algo que estoy haciendo ahora es obtener la extension del archivo, el nombre del archivo y hacerle un sort luego:
find /home/user/scripts -type f | awk '{print substr($0, index($0, "."))" "$0}' | sort
que hace algo como lo siguiente
.sh /home/user/scripts/cvsstat.sh
.sh /home/user/scripts/menuutil.sh
.sh /home/user/scripts/test.sh
.test /home/user/scripts/file.test
.txt /home/user/scripts/file2.txt
O sea, con UNA linea, se pueden hacer cosas sumamente utiles en el manejo de muchos archivos de texto y salidas a consola.
Se pueden utilizar arrays para operaciones con mas complejidad.
Es una herramienta sumamente poderosa y el unico limite que tiene es nuestra imaginacion :D
Manual de AWK
http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html
Manual de GAWK
http://www.gnu.org/manual/gawk/html_node/index.html
Que lo disfruten!
Saludos.
lunes, 12 de mayo de 2008
Suscribirse a:
Enviar comentarios (Atom)
1 comentario:
Es impresionante la poca documentación que existe en nuestro idioma. A ver si analizando tu ejemplo consigo hacer la tontería que busco: extraer el nombre de archivo sin extensión de una variable $i que contiene el nombre completo de un archivo.
Publicar un comentario