Planeta TTY

Comando cut

Posted in Comandos Basicos, Manipulacion de Texto by Jorgito Capurro on 7 julio 2009

El comando cut nos permite buscar, seleccionar y/o extraer columnas o campos dentro de un archivo estructurado. También nos brinda la posibilidad de conectarlo mediante un pipe, para que tome el flujo de texto de la entrada estándar (STDIN). El archivo tiene que estar estructurado mediante un patrón delimitador con el cual indicaremos la separación de los campos. Por defecto, el patrón delimitador es el espacio tabulador.

Sintaxis

cut opciones [fichero]

Empecemos con unos ejemplos para comprender el uso de este comando. Supongamos que tenemos el siguiente archivo de texto, al que llamaremos Datos.txt:

0001 Marcos Antonio Bs As 011-44584477
0002 Miguel Alvarez Mendoza 011-56500144
0003 Lucas Paganini Bs As 011-54552798
0004 Sergio Acosta Cordoba 011-54441235
0005 Liliana Perez Tucuman 011-51135813

Como pueden ver, este archivo esta estructurado, es decir, cada campo corresponde a un valor en común (por ejemplo, el primer campo al ID, el segundo campo el nombre y el apellido, etc) y los mismos, están separados por un patrón delimitador que, en este caso, es el tabulador.

Vamos unos ejemplos sencillos de como utilizar el comando cut para fines practicos. Por ejemplo, el parametro -c de cut, indica el rango de caracteres que queremos “recortar” del flujo que le pasemos como argumento. Es decir, si ejecutamos el siguiente comando:

$ cat Datos.txt -c 0-4

Obtendremos la siguiente salida por pantalla:

0001
0002
0003
0004
0005

¿Sencillo verdad? En el ejemplo anterior, -c- 0-4 indica que se quiere extraer los caracteres que se encuentran desde la posición 0 hasta la 4, y desechar el resto de la entrada. También, se puede especificar mas de un rango mediante el uso de la coma, de la siguiente forma:

$ date
lun jul 6 21:29:13 ART 2009
$ date | cut -c5-10,24-28
jul 6 2009

Como mencione anteriormente, una de las características mas potentes de cut es la extracción de campos y/o columnas separados por un patrón delimitador. Para poder hacer uso de esto, simplemente usamos la opción -f. Veamos un ejemplo:

$ cut -f2 Datos.txt

Obtendremos la siguiente salida por pantalla:

Marcos Antonio
Miguel Alvarez
Lucas Paganini
Sergio Acosta

Se puede remarcar que el nombre y el apellido de las personas conforman un solo campo, ya que este no esta separado por un carácter tabulador, sino por un espacio normal.

El patrón delimitador puede cambiarse, utilizando la opción -d delimitador. Un buen ejemplo seria utilizar el archivo /etc/passwd. Este archivo separa sus campos mediante el carácter de dos puntos.

$ cat /etc/passwd | head
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:100:sync:/bin:/bin/sync
games:x:5:100:games:/usr/games:/bin/sh
man:x:6:100:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh

Ahora, mostraremos el nombre del usuario y el shell que utiliza, modificando el carácter delimitador.

$ cat /etc/passwd | head | cut -d “:” -f1
root
daemon
bin
sys
sync
games
man
lp
mail
news

Tambien, podemos mostrar dos campos al mismo tiempo

$ cat /etc/passwd | head | cut -d “:” -f1,7
root:/bin/bash
daemon:/bin/sh
bin:/bin/sh
sys:/bin/sh
sync:/bin/sync
games:/bin/sh
man:/bin/sh
lp:/bin/sh
mail:/bin/sh
news:/bin/sh

Es importante aclarar que el comando cut no modifica el archivo origen, sino que toma la entrada estándar (STDIN), la formatea y retorna un resultado sobre la salida estándar (STDOUT), sin alterar el archivo original.

¡Espero que les halla sido de utilidad!

Saludos

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: