LINUX – Bash Script con código AWK embebido.-

[crayon-68650932814d7771041202/]

Publicado en Unix - Linux | Deja un comentario

LINUX – Uso de IFS y comando READ en SCRIPTS BASH.-

El IFS (Input Field Separator) es una variable global cuyo valor es el carácter o caracteres que funcionan como delimitador para separar un valor de otro en la línea leída. Podemos imprimir el valor del IFS con el siguiente comando:

[crayon-6865093282788288906433/]

Como podemos ver, el IFS por defecto es cualquiera de:

  • un espacio en blanco
  • un tabulador
  • un salto de línea

Pero en ocasiones, podemos tener como valor de una variable una secuencia de valores unidos por otro tipo de separador (una coma, dos puntos, etc…)

Cambiando temporalmente el valor del IFS, podemos utilizar el comando «read» para descomponer este valor en los valores individuales de que consta.

Por ejemplo, supongamos que tenemos que procesar una línea en el formato del fichero /etc/passwd

[crayon-68650932827aa144926701/]

Comenzamos por guardar el valor de la variable IFS, para poder recuperarlo más tarde, y asignar temporalmente el carácter «:» como separador

[crayon-68650932827b7467960501/]

Con esto, podemos descomponer el valor de la línea en los campos de que consta, con el comando «read»:

[crayon-68650932827c0927504136/]

Y por último, volvemos a asignar a IFS el valor que tenía previamente:

[crayon-68650932827cb337906459/]
Publicado en Unix - Linux | 1 comentario

BASH – Dividir variable por delimitador especifico.-

[crayon-6865093282e80251222942/]

Al ejecutar este SCRIPT obtendremos el siguiente resultado. En esta ocasión se definió los valores dentro de una variable, también se puede definir un ARRAY o leer directamente de un archivo. Los usos quedan a la imaginación.-

[crayon-6865093282e9f534929285/]
Publicado en Unix - Linux | Deja un comentario

BASH – Script para encontrar ejecutables de la variable PATH.-

Para obtener todos los archivos ejecutables en tu sistema, puedes recorrer los directorios en la variable PATH.

[crayon-68650932831e4755496077/]
Publicado en Unix - Linux | Deja un comentario

BASH – Script para leer archivo linea por linea.-

Para leer un archivo en BASH linea por linea se podría implementar realizando :

Fíjate que en la última línea, el fichero (hay que poner su path completo) se utiliza como entrada para el comando while. Pero con esta versión sencilla podemos encontrarnos con varios problemas. Una versión más segura es:

IFS es una variable interna de bash que establece el separador de palabras. Al dejarlo vacío evitamos que se eliminen los espacios que hubiera al principio de la línea. El parámetro -r en el comando read hace que no se interpreten los caracteres escapados (con \). Y la condición || [[ -n $line ]] evita que se produzca un error si la última línea no termina con \n. Como conviene no alterar IFS, podemos mejorar la solución con :

Publicado en Unix - Linux | Deja un comentario