Linux / Comando cut: extraer posiciones y campos de cada línea

cut selecciona posiciones de bytes o caracteres, o campos separados por delimitadores, en cada línea de entrada. Es útil para extraer columnas sencillas, pero no sustituye a un analizador de CSV.

En el modo de campo, -f utiliza por defecto el tabulador como delimitador. Para usar dos puntos o comas, especifique -d junto con él. Elija -c y -b considerando la implementación y la codificación de caracteres.

Sintaxis básica

cut -d 'delimitador' -f número_de_campo [archivo ...]

La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man cut en el sistema actual.

Ejemplos de uso

Extracción de campos separados por dos puntos

Extrae el primer campo de la lista de cuentas del sistema.

cut -d ':' -f 1 /etc/passwd

Seleccionar varios campos

Los campos se imprimen en su orden original de entrada, no en el orden de los números de la lista.

cut -d ':' -f 1,7 /etc/passwd

Extracción de rangos de caracteres

Se utiliza al inspeccionar la parte inicial de cada línea.

cut -c 1-8 sample.txt

Resultado de extraer campos con un delimitador

Es un ejemplo de cómo extraer solo el primer campo de dos filas separadas por dos puntos. -d es el delimitador, y -f es el número del campo que se seleccionará.

printf 'alpha:100\nbeta:200\n' | cut -d: -f1

Ejemplo de salida:

alpha
beta

cut -d ' ' -f2 no puede analizar de manera confiable texto con múltiples espacios consecutivos en columnas. Para esos datos, awk es adecuado. Formatos como CSV, donde el delimitador puede estar dentro de comillas, no se pueden manejar con precisión solo con cut, por lo que se debe usar un analizador CSV dedicado.

Opciones y formatos principales

Opciones·Formato Descripción
-d delimitador Especifica el carácter delimitador de campo.
-f lista Elige el número de campo o el rango que se va a imprimir.
-c lista Selecciona la posición del carácter.
-b lista Selecciona la posición del byte.
-s En modo de campos, omite las líneas que no tienen delimitador.

Precauciones al usar

cut -d ',' no entiende las comas dentro de comillas ni los campos CSV que se extienden a varias líneas. Para esos datos, use un parser específico de CSV. Las líneas sin delimitador se imprimen tal cual de manera predeterminada, por lo que, si es necesario, agregue -s.

Preguntas frecuentes

¿También se pueden extraer varias columnas separadas por espacios con cut?

Si el ancho de los espacios consecutivos no es consistente, los números de campo pueden desalinearse. Para este tipo de entrada, awk suele ser más adecuado.

Documentación oficial

Puede consultar el comportamiento exacto de las opciones y las diferencias según la implementación en la documentación oficial de cut.