Script Shell Bash con lectura de fichero

Vamos a echar un vistazo a una forma de implementar un script Shell Bash para que, desde el mismo, podamos realizar una lectura de un fichero externo. La idea es que nuestro script sea capaz de acceder al fichero e ir haciendo una lectura registro a registro. Esto nos permitirá extraer los datos de cada uno de los registros y realizar el procesamiento necesario con cada uno de ellos.

 


 

Como es obvio, un script que vaya leyendo registros de un fichero puede resulta de muchísima utilidad a la hora de implementar diversas funcionalidades en cualquier aplicación. Así que, aunque el ejemplo de hoy sea sencillo, la verdad es que la estructura indicada será la base de cualquier otro script de mayor complejidad.

 

Script Shell Bash con lectura de fichero

 

Los pasos a seguir para crear un script de este tipo serán los siguientes:


1º) En primer lugar, nos creamos un fichero cuyo contenido serán los registros que queremos leer y tratar desde nuestro script.

Por ejemplo, nos creamos un fichero denominado equipos.txt con el siguiente contenido. Como vemos, tenemos el nombre del equipo y el país correspondiente separados por el literal ";" (punto y coma).


Real Madrid;España
Barcelona;España
Oporto;Portugal
Chelsea;Inglaterra
Paris SG;Francia
Juventus;Italia
Bayern Munich;Alemania


2º) Por supuesto, ahora tenemos que crearnos el script Shell Bash que nos permita acceder al fichero anterior y tratar sus registros. El contenido será el siguiente.


# --------------------------------------------------
#!/bin/bash
# Lectura de fichero de equipos


fichero_entrada="equipos.txt"

echo $fichero_entrada

# 1) Lectura de los registros del fichero
echo "*** Lectura de registros ***"
while IFS= read -r registro
do
 
echo "$registro"
done < $fichero_entrada

# 2) Particion del registro (mediante punto y coma) en equipo y pais
echo "*** Extraer equipo y pais ***"
while IFS=';' read -r equipo pais
do
 
echo equipo: "$equipo" @@@@@ pais: "$pais"
done < $fichero_entrada

# 3) Extraccion de registros de España
echo "*** Equipos de España ***"
while IFS= read -r registro
do
  if [[ "$registro" == *"España"* ]]; then
   
echo "$registro"
  else
   
echo "Equipo de fuera de España"
  fi
done < $fichero_entrada
# --------------------------------------------------


Como vemos, el script se compone de 3 partes diferenciadas:

* Primera parte: Lo único que hace es acceder al fichero, ir leyendo cada uno de sus registros e imprimir un texto de salida para cada uno de ellos.

* Segunda parte: Para cada uno de los registros que va leyendo, realiza la partición del mismo en función del separador ";" (punto y coma). Tengamos en cuenta que los registros del fichero .txt de partida están compuestos por el nombre del equipo, un separador ";" y el país al que pertenecen. 

Una vez hecha la separación, sus valores se almacenan en dos variables, denominadas "equipo" y "pais". Posteriormente, dichas variables se emplean para imprimir un texto indicando el nombre del equipo y el país al que pertenece.

* Tercera parte: Aquí lo que se hace es ir leyendo los registros del fichero e ir comprobando si alguno de ellos contiene la cadena de texto "España". En caso afirmativo, se imprime el contenido del registro. En caso negativo, se imprime el texto "Equipo de fuera de España".

 

3º) A continuación, nos posicionamos en el directorio en el que se encuentra el fichero que nos acabamos de crear y abrimos, por ejemplo, la herramienta GitBash (podría ser cualquier otro editor de comandos).

En mi caso, se trata de la carpeta:

C:\tmp

Nos aparecerá una ventana similar a la siguiente:


 

4º) Para ejecutar el script que nos acabamos de crear, procedemos a introducir lo siguiente en la línea de comandos.

./leerequipos.sh

 

5º) Si hemos realizado todos los pasos anteriores y si todo ha ido bien, el procesamiento del script debería generar un texto como este.

 
$ ./leerequipos.sh
equipos.txt
*** Lectura de registros ***
Real Madrid;España
Barcelona;España
Oporto;Portugal
Chelsea;Inglaterra
Paris SG;Francia
Juventus;Italia
*** Extraer equipo y pais ***
equipo: Real Madrid @@@@@ pais: España
equipo: Barcelona @@@@@ pais: España
equipo: Oporto @@@@@ pais: Portugal
equipo: Chelsea @@@@@ pais: Inglaterra
equipo: Paris SG @@@@@ pais: Francia
equipo: Juventus @@@@@ pais: Italia
*** Equipos de España ***
Real Madrid;España
Barcelona;España
Equipo de fuera de España
Equipo de fuera de España
Equipo de fuera de España
Equipo de fuera de España

Nos aparecerá una ventana similar a la siguiente:


 

Como se observa, en la salida tenemos la información correspondiente a los tres bloques de código de los que hablamos más arriba.

 

* Primer bloque: Lectura de registros del fichero.

*** Lectura de registros ***
Real Madrid;España
Barcelona;España
Oporto;Portugal
Chelsea;Inglaterra
Paris SG;Francia
Juventus;Italia

 

* Segundo bloque: Extracción de equipo y país de cada registro del fichero.

*** Extraer equipo y pais ***
equipo: Real Madrid @@@@@ pais: España
equipo: Barcelona @@@@@ pais: España
equipo: Oporto @@@@@ pais: Portugal
equipo: Chelsea @@@@@ pais: Inglaterra
equipo: Paris SG @@@@@ pais: Francia
equipo: Juventus @@@@@ pais: Italia

 

3º) Tercer bloque: Identificación de los equipos correspondientes a España.

*** Equipos de España ***
Real Madrid;España
Barcelona;España
Equipo de fuera de España
Equipo de fuera de España
Equipo de fuera de España
Equipo de fuera de España

 

Como vemos, resulta relativamente sencillo implementar un script que acceda a un fichero, lea sus registros y realice un tratamiento sobre los mismos. Por tanto, ya no tenemos excusa para utilizar este tipo de herramientas en nuestras aplicaciones. Creedme, este tipo de procesos batch nos pueden ser muy útiles para desarrollar ciertos tipos de funcionalidades requeridas por los usuarios.

Saludos.


Comentarios

Entradas populares de este blog

Componentes y Ventanas de Java Swing

Creación de Webservice SOAP básico

Fichero standalone del Servidor JBoss EAP