UNIX – Construyendo una serie de comandos con AWK.-

Awk es un lenguaje de programación creado para procesar texto de ficheros y flujos de datos muy utilizado en ambientes Unix, y disponible en literalmente todas las distribuciones de GNU/Linux, es más, es mencionado en la Single Unix Specification como una de las utilidades necesarias en todo sistema Unix, este gano popularidad como una manera de añadir mas funcionalidad a las tuberías de Unix; Sed y Awk inspiraron a Larry Wall a escribir Perl.

En este articulo vamos a aprender a utilizar AWK como una forma de construir comandos para ser ejecutados en serie, como por ejemplo; mover todos los ficheros encontrados con el comando locate a un directorio o apagar una serie de clientes windows como explicamos en un articulo pasado.

Para que vayan entendiendo mejor vamos a ir escribiendo el comando por partes, el problema que se plantea es el siguiente.

1) Se necesita copiar todos los ficheros que terminen en «conf» del directorio /etc a la carpeta /home.

Lo primero que tenemos que plantearnos es lo que vamos hacer, en este caso es encontrar todos los ficheros que empiezen con .conf del directorio /etc, esto lo podemos hacer con el comando locate de la siguiente manera:

locate /etc/*conf

Esto nos lanzaria algo parecido a esto:

/etc/adduser.conf
/etc/ca-certificates.conf
/etc/debconf.conf
/etc/deluser.conf
/etc/gai.conf

Ahora vamos a construir el comando, el problema nos dice que tenemos que copiar estos ficheros a la carpeta /home, a el comando anterior le añadimos una tuberia y usamos awk de la siguiente manera para construir la serie de comandos:

Esto nos lanzaria algo parecido a esto:

En el comando anterior hemos añadido una tuberia para que la salida del comando locate la mande a la entrada awk, entonces el comando awk ha impreso todas las lineas (Para eso la variable $0) con la cadena «cp -rf » atras, y la cadena «/home» delante, el resultado es una serie de comandos a los cuales solo le faltaria otra tuberia para poder ejecutarlo.

Para ejecutar estos comandos simplemente añadimos otra tuberia y mandamos la salida a el comando bash, para que los ejecute por linea, por ejemplo:

Guiandonos por este ejemplo podemos construir comandos según las necesidades que tengamos…..

Publicado en Unix - Linux | 1 comentario

AWK – Paso de variables desde un shell script.-

Para pasar una variable desde un shell script hacia AWK se utiliza la opción «-v». por ejemplo :

Para retornar la salida de awk hacia un shell script, se realiza de la siguiente forma :

Publicado en Unix - Linux | Deja un comentario

BASH – Arrays asociativos con AWK.-

AWK maneja arrays asociativos de dimensión 1 por lo que puede utilizarse cualquier índice, incluso simular arrays ndimensionales array[i,j].

Para realizar un pequeño ejemplo, consideraremos el siguiente archivo «texto.txt», el cual contiene los siguientes datos :

Al ejecutar la siguiente instrucción desde la linea de comandos :

Obtendremos como resultado, lo siguiente :

Publicado en Unix - Linux | 1 comentario

BASH – Script para mover archivos entre directorios.-

Un caso práctico, donde declaramos como variables las rutas de los directorios, aplicamos permisos y movemos los ficheros de un origen a otro directorio sería:

Publicado en Unix - Linux | 1 comentario

BASH – Script para buscar archivos repetidos.-

En ocasiones nuestro sistema cuenta con respaldos duplicados, manteniendo almacenada la misma información ocupando espacio innecesariamente en nuestro ordenador con multitud de archivos repetidos de todo tipo (fotos, documentos, videos…), que nos pueden llevar toda una vida organizar.

Ahora con tan solo unas pocas lineas de código, podemos realizar ese trabajo rápidamente, adaptándolo a nuestras necesidades, pudiendo modificar los parámetros para realizar la búsqueda con un filtro definido y moverlos al directorio que deseemos, y después realizar el mantenimiento planificado de backup que se requiera.

El registro de los archivos que se mueven, quedan en una bitácora que se guarda en un archivo creado en el mismo directorio donde se encuentra el script original. A ese registro con las operaciones realizadas le llamaremos directorios.dat

Publicado en Unix - Linux | Deja un comentario