Índice

Recuperar el campo de una línea

Objetivo

Recuperar el campo de una línea que posee un separador de campo.

Ejemplo

Recuperar el tercer campo de la variable línea:

$ línea=’Newton|Cristina|Londres’ 

Primer método

Usando el comando cut:

$ echo $línea | cut -d’|’ -f3 
Londres

El carácter separador | (opción -d) debe ser protegido por apóstrofos para que el shell no lo interprete como un tubo de comunicación.

(Ver capítulo Los comandos filtro - Tratamiento de datos)

Segundo método

Usando el comando awk:

$ echo $línea | awk -F’|’ ’{print $3}’ 
Londres

El carácter separador | (opción -F) debe ser protegido por apóstrofos para que el shell no lo interprete como un tubo de comunicación.

(Ver capítulo El lenguaje de programación awk - Principio)

Tercer método

Usando el comando read del shell, modificando la variable IFS.

En ksh:

$ IFS="|" 
$ echo "$línea" | read Nombre Apellidos ciudad 
$ echo $ciudad 
Londres

No hay que olvidar poner comillas entorno a la variable línea ya que contiene el carácter | que es ahora un delimitador (como antes era el espacio). Este carácter no debe ser interpretado por el shell, es necesario que pase por el tubo. El comando read, que es un comando interno, es interpretado por el shell actual en ksh; las variables nombre, apellidos y ciudad están disponibles en el shell actual tras la ejecución ...