Uso del comando cut con ejemplos
Para extraer determinados caracteres de una o varias líneas delimitándolos por su posición, tenemos el comando cut
.
Con cut podemos extraer partes de una línea indicando la posición de bytes y caracteres. También, si indicamos un delimitador, podemos extraer los campo del fichero.
Extraer campos
Para extraer campos con -f (field) debemos indicar un delimitador con -d. Un delimitador puede ser el espacio en blanco (-d » «), dos puntos (-d «:»), punto y coma (-d «;»)… Con -f número indicamos el número del campo a extraer. O de los campos, ya que podemos indicar más de un campo, incluso rangos.
Si queremos extraer la primera palabra de cada verso de un poema, entendiendo que las palabras están separadas por un espacio en blanco, podemos usar:
cut -d " " -f 1 poema.txt
Si lo que queremos es la primera y la tercera palabra de cada verso, indicaremos los campos que queremos extraer separados con comas después del modificador -f:
cut -d " " -f 1,3 poema.txt
Y si queremos un rango, por ejemplo, las tres primeras palabras, en lugar de coma, escribiremos un guión:
cut -d " " -f 1-3 poema.txt
Incluso podemos unir rangos y campos sueltos. Veamos como extraer los campos del 1 al 3 y luego, el campo 6:
cut -d " " -f 1-3,6 poema.txt
O rangos hasta o a partir de un determinado campo. Para mostrar las líneas sin la primera palabra, indicaremos -f 2- para que muestre desde el campo 2 hasta el final:
cut -d " " -f 2- poema.txt
La opción inversa, del comienzo hasta un determinado campo, lo indicaremos con un guión y el número. Por ejemplo, para mostrar desde el comienzo hasta el cuarto campo, haremos:
cut -d " " -f -4 poema.txt
Por defecto, nos va a devolver los campos separados por espacios en blanco, pero podemos modificar esto y que nos devuelva el resultado con otro separador. Lo haremos con –output-delimiter y el separador que queramos.
Si queremos que nos devuelva las tres primeras palabras de cada línea separadas por guiones, escribiremos:
cut -d " " -f 1-3 --output-delimiter "-" poema.txt
Para que devuelva cada palabra en una nueva línea, el delimitador de salida cambia un poco, ya que debe ser –output-delimiter=$’\n’. Queremos las tres primeras palabras de cada verso pero que nos las devuelva cada una en una línea distinta:
cut -d " " -f 1-3 --output-delimiter=$'\n' poema.txt
Extraer caracteres
Además de campos, podemos también extraer caracteres con -c. El formato es muy parecido a -f, pero no hay que indicar el delimitador. Supongamos que queremos el primer carácter de cada línea:
cut -c 1 poema.txt
El carácter 1 y 3:
cut -c 1,3 poema.txt
Los tres primeros caracteres de cada línea:
cut -c 1-3 poema.txt
Equivalente a:
cut -c -3 poema.txt
Y, para mostrar del carácter 3 hasta el final:
cut -c 3- poema.txt
Extraer bytes
Para extraer bytes, el formato es igual que con los caracteres pero, en lugar de usar -c, usaremos -b.
Pingback: Seleccionar un color aleatorio en ImageMagick – Linux en Español
Pingback: Numerar las líneas que contienen un patrón con grep – Linux en Español