Herramientas de usuario

cut

cut es un filtro que Corta una línea de texto.

Por ejemplo:

cut fichero -c12-19

…corta del caracter 12 al 19.

Si un fichero contiene múltiples columnas, y sólo necesitamos una de ellas, podremos usar:

cut -d',' -f2 filename

Por ejemplo, para extraer sólo la segunda columna usando una coma como separador:

cut -d',' -f2 ~/Escritorio/miembros.csv

También podríamos probar:

cut -d',' -f3 ~/Escritorio/miembros.csv
cut -d':' -f1 /etc/passwd
cut -d':' -f7 /etc/passwd
cut -c1-10 fichero.txt

Ejemplo: Ver hora

Uso de Cut

El comando cut ofrece varias opciones para extraer partes específicas de una línea. Cada opción se especifica para una manera en la cual se seleccionan los datos.

Por posición de bytes

La opción -b se usa para cortar desde posiciones de bytes específicas de cada línea de un fichero, y es útil para operar con datos de ancho fijo o ficheros donde cada posición de byte tiene un significado contemplado.

Los bytes pueden especificarse como:

  • Posiciones individuales (por ejemplo, 1,3,5)
  • Rangos (por ejemplo 1-4)
  • Desde el comienzo hasta el final de una línea

Para extraer bytes específicos, y mostrar el primer, segundo y tercer byte (caracteres) de cada línea de fichero.txt, se usa

cut -b 1,2,3 fichero.txt

Sólo se presentarán los bytes seleccionados, sin rango alguno.

Extraer Bytes usando rangos específicos

Podremos extraer bytes usando rangos. Por ejemplo, para extraer caracteres de cada linea de fichero.txt desde la posición 1 a la 3, y luego desde la 5 a la 7, ingresaríamos:

cut -b 1-3,5-7 fichero.txt
Extraer bytes desde el comienzo al final de una línea

Para extraer todos los bytes desde el comienzo de una línea hasta el final.

cut -b 1- fichero.txt
  • 1- significa “desde el byte 1 hasta el último de la línea”. La línea entera se imprime tal cual está
Extraer bytes desde el comienzo hasta una posición específica

Para cortar bytes desde el primer byte de una línea hasta el tercer byte:

cut -b -3 state.txt
  • -3 significa desde el byte inicial (1) hasta el byte 3. Se asume automáticamente que la posición de inicio siempre es 1.

Extraer salida por posición de caracter

La opción -c (“columna”) del comando cut es la recomendada cuando tenemos que hacer tratamiento de ficheros de texto, puesto que extrae los caracteres de Unix. Podrá especificar un listado de posiciones de caracteres por medio de comas , o delimitando un rango con un guiónm -.

Los caracteres de tabulación y retroceder se tratan como caracteres únicos, y se requiere un listado de caracteres válidos para evitar errores.

  • Las posiciones de los caracteres comienzan desde 1.
  • Los tabuladores y espacios se tratan como un solo caracter.

La sintaxis es

cut -c [(k)-(n)/(k),(n)/(n)] filename

donde k denota la posición de comienzo del caracter y n denota la posición de finalización de caracter en cada línea si k y n están separados por un -; caso contrario, son tratados como la posición única de caracter en cada linea del fichero tomado como entrada.

Extraer caracteres espećificos de cada línea

Para extraer y presentar los caracteres en las posiciones 2, 5, y 7 de cada línea de fichero.txt con el comando Cut se usa:

cut -c 2,5,7 state.txt
  • -c 2,5,7 seleccionan los caracteres en las posiciones 2, 5, y 7 de cada línea.
  • Se ignoran todos los demás caracteres.

Extract specific characters Extract specific characters

Cortar un rango de caracteres

Para extraer y presentar los primeros 7 caracteres de cada línea de fichero.txt:

cut -c 1-7 fichero.txt
  • 1-7 selecciona los caracters de las posiciones 1 a 7. La salida incluye sólo presenta la porción seleccionada de cada línea, y omite el resto.
Extraer caracteres desde el comienzo al final de la línea

Cut usa un formato especial para seleccionar caracteres desde el comienzo hasta el final de la línea, podemos proveer específicamente la posición de inicio, y omitir la posición final del corte.

Para extraer y mostrar el primer caracter de cada línea de fichero.txt:

cut -c 1- fichero.txt
  • 1- significa “desde el caracter 1 hasta el caracter final de la línea”
  • Se muestra la línea entera
Extraer caracteres desde el comienzo hasta una posición específica

Si queremos extraer caracteres desde el primer caracter de la línea hasta el quinto caracter:

cut -c -5 fichero.txt
  • -5 extrae los caracteres desde la posición 1 inclusive hasta la 5 de la línea.
  • Se asume automáticamente la posición de inicio.

Se ha omitido la posición de inicio y el comando imprime desde la posición de inicio hasta la posición final indicada.

Extraer salida por Campos

La opción -f (por “fields” o campos) se utiliza para cortar campos (encolumnados especificos de cada línea de un fichero), siendo estos grupos de caracteres separados por un delimitador.

Por defecto, se usa como delimitador un caracter de Tabulación (TAB), pero podremos usar la opción -d para especificar otro delimitador distinto, como caracter de espacio en blanco '' , caracter coma '', o caracter punto y coma ;.

El Espacio en blanco no se considera un delimitador en UNIX.

La sintaxis general es:

cut -d "delimiter" -f (número de campo) fichero.txt
Intentar extraer un Campo usando Delimitador por defecto

Este ejemplo muestra lo que sucede cuando se intenta extraer un campo sin definir limitador. Ayuda a los usuarios a comprender porqué es importante especificar uno con -d, de lo contrario el comando podría no funcionar como se lo desea.

cut -f 1 fichero.txt
  Default delimiter is TAB
  Since state.txt is space-separated, no field split occurs
  Entire line is printed instead of a single field

Extract first field using -f option Extract first field using -f option

Siempre especifique el delimitador con -d cuando su fichero no está separado por tabulaciones.
Extraer el Primer Cmapo usando Espacio en Blanco como delimitador

Este ejemplo extrae sólo la primer columna (nombres de provincia) de un fichero separado por espacios en blanco. Es útil cuando queremos una columna específica de un texto estructurado.

Si se usa la opción -d “ ” se considera al caracter de espacio en blanco como un separador de campos o delimitador.

cut -d " " -f 1 fichero.txt
  • -d “ ”: configura al caracter de espacio en blanco como delimitador de campo;
  • -f 1: selecciona el primer campo de cada línea.
  • Sólo se presenta la columna cortada.
Extraer un Rango Continuo de Campos

Este ejemplo demuestra cómo extraer un gurpo de campos consecutivos. Es útil cuando los datos se reparten a lo largo de múltiples columnas que están juntas.

El comando devolverá desde el primer al cuarto campo de cada línea de fichero.txt

cut -d " " -f 1-4 fichero.txt
  • -d “ ”: Configura el caracter de espacio en blanco como delimitador de campo;

--complement: Invertir los campos o caracteres seleccionados

Esta opción se usa para revertir la selección realizada por las demás opciones, ya sea -f o -c. En lugar de presentar los campos o caracteres seleccionados, presenta los no seleccionados.

  • Debe usarse con otro método de selección (-f o -c)
  • No puede usarse aisladamente
  • Es útil para excluír datos no deseados en lugar de los datos deseados.
Remover el primer campo de cada línea

Si queremos remover la primer columna de cada fichero separado por espacios en blanco, e imprimir los campos restantes (puesto que la primer columna no se necesita en los procesamientos posteriores), podremos hacer:

cut --complement -d " " -f 1 fichero.txt
  • -d “ ”: Configura el espacio en blanco como delimitador de campo.
  • -f 1: selecciona el primer campo.
  • –complement: le dice a cut que excluya el campo seleccionado (invierte la selección).
  • Se imprimirán todos los campos exceptuando el primero, que se deseleccionó)

1 –complement

Remover una posición de caracter específica

Si deseamos remover un caracter de una posición específica de cada línea, para borrar caracters de posición fija, tales como símbolos de formato:

cut --complement -c 5 fichero.txt
  • -c 5: selecciona el caracter en la quinta columna de cada línea del fichero.txt.
  • –complement: invierte la selección de dicho caracter.
  • Presenta todos los caracteres de cada columna, menos el quinto deseleccionado.

5. --output-delimiter: Change the Output Field Separator

The –output-delimiter option is used to change the delimiter used in the output. By default, the output delimiter is the same as the input delimiter specified using -d.

  Works only when using the -f option
  Does not modify the input file
  Affects only how data is displayed on the terminal
  Very useful for data formatting in scripts

Example: Change Output Delimiter to a Custom Symbol

This example changes the output delimiter from space to % while extracting selected fields. It helps when you want the output in a specific format.

cut -d " " -f 1,2 state.txt --output-delimiter='%'
  1. d “ ”: tells the cut command that fields in the file are separated by spaces.
  2. f 1,2: selects the first and second fields from each line.

By default, these two fields would be printed with a space between them.

  1. -output-delimiter='%': changes this space into a percent (%) symbol in the output.

The original file remains unchanged, only the displayed output is formatted differently.

2024-02-16_13-18

6. Display Version (--version) Using cut Command

–version: This option is used to display the version of cut which is currently running on your system.

cut --version

display version of cut command display version of cut command

Real-World Use Cases

A menudo el comando cut se combina con otros a través de caños (|). Esto permite extraer sólo la parte requerida de los datos y luego seguir procesándola.

1. Extraer una Columna y ordenarla

Si queremos extraer el primer campo (nombres de provincias) de un fichero separado por espacios y luego usar sort para ordenarlas en orden alfabético inverso:

cat provincias.txt | cut -d ' ' -f 1 | sort -r
  cat state.txt: displays the content of the file.
  cut -d " " -f 1: extracts only the first field (state names).
  sort -r: sorts the extracted names in reverse alphabetical order.
  The final output shows only sorted state names.

1 using tail with pipe (|) in cut command

Extraer campos específicos de las primeras pocas líneas de un fichero

Si deseamos extraer datos únicamente de las primeras líneas de un fichero y guardar los resultados en otro, para previsualizar el procesamiento de ficheros enormes:

cat provincias.txt | head -n 3 | cut -d ' ' -f 1 > lista.txt
  • cat provincias.txt: envía los contenidos de fichero a la tubería.
  • head -n 3: limita la salida a las primeras tres líneas del fichero.
  • cut -d “ ” -f 1: extrae el primer campo de las líneas escogidas.
  • >: redirije la salida al fichero lista.txt.

Luego vemos el resultado con:

cat list.txt

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información