Comandos LinuxExplicados en español
/
Ficha27 / 104
Categoría
Texto
Ejemplos
6
Ver también
grep · cat · tr · head

cut

cut (cortar)

Extrae columnas o partes de cada línea de un archivo.

Toma cada línea de un archivo, la separa en pedazos usando un separador y muestra solo los pedazos que le pides. Sirve para archivos donde los datos vienen en columnas, como /etc/passwd o un CSV, sin tener que abrirlos en una hoja de cálculo.

Sintaxiscut OPCIÓN LISTA ARCHIVO...
§ 1

Despiece

6 ejemplos
Ver los usuarios del sistema

Ver los usuarios del sistema

6 piezas
Lámina01 / 06
Comandocut -d : -f 1 /etc/passwd
Piezas6
Escala1:1
N.ºPiezaTipoQué hace
1cutComandoEl comando que corta una parte de cada línea.
2-dOpciónDelimiter: dice cuál es el separador entre campos.
3:ValorEl separador de /etc/passwd son los dos puntos, no el tabulador.
4-fOpciónFields: dice qué campo quieres.
51ValorEl primer campo de la línea, que en /etc/passwd es el nombre de usuario.
6/etc/passwdArgumentoEl archivo del que tomas las líneas.
Resultado

Imprime solo los nombres de usuario del sistema, uno por línea: root, daemon, bin y así sucesivamente.

Ver usuario y shell a la vez

6 piezas
Lámina02 / 06
Comandocut -d : -f 1,7 /etc/passwd
Piezas6
Escala1:1
N.ºPiezaTipoQué hace
1cutComandoEl comando que corta una parte de cada línea.
2-dOpciónDelimiter: dice cuál es el separador entre campos.
3:ValorEl separador de dos puntos.
4-fOpciónFields: la lista de campos que quieres.
51,7ValorDos campos separados por coma: el 1 y el 7. Se conservan en el orden en que los pidas.
6/etc/passwdArgumentoEl archivo del que tomas las líneas.
Resultado

Cada línea queda como nombre de usuario y shell, por ejemplo root:/bin/bash. Muy útil para ver de un vistazo qué usuarios tienen shell.

Ver quién tiene shell de verdad

9 piezas
Lámina03 / 06
Comandocut -d : -f 1,7 /etc/passwd | grep /bin/bash
Piezas9
Escala1:1
N.ºPiezaTipoQué hace
1cutComandoEl comando que corta una parte de cada línea.
2-dOpciónDelimiter: el separador entre campos.
3:ValorLos dos puntos de /etc/passwd.
4-fOpciónFields: qué campos tomar.
51,7ValorEl nombre de usuario y el shell.
6/etc/passwdArgumentoEl archivo con las cuentas del sistema.
7|OperadorPipe: la salida de cut entra a grep.
8grepComandoFiltra las líneas para quedarse solo con las que te interesan.
9/bin/bashValorEl texto que buscas: el shell de los usuarios que pueden iniciar sesión.
Resultado

Solo quedan los usuarios cuyo shell es /bin/bash. Los que tienen /usr/sbin/nologin o /bin/false, que son cuentas de servicio, quedan fuera.

Sacar una columna de un CSV

6 piezas
Lámina04 / 06
Comandocut -d , -f 2 datos.csv
Piezas6
Escala1:1
N.ºPiezaTipoQué hace
1cutComandoEl comando que corta una parte de cada línea.
2-dOpciónDelimiter: en los CSV el separador es la coma.
3,ValorLa coma, que en datos.csv separa nombre, edad y ciudad.
4-fOpciónFields: qué campo tomar.
52ValorEl segundo campo: la edad.
6datos.csvArgumentoEl archivo del que tomas las líneas.
Resultado

Imprime la columna de las edades. El encabezado edad también sale, porque cut trabaja línea por línea sin saber qué es un encabezado.

Cortar por tabulador, que es el separador de siempre

4 piezas
Lámina05 / 06
Comandocut -f 1 notas.txt
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1cutComandoEl comando que corta una parte de cada línea.
2-fOpciónFields: qué campos tomar, usando el separador de omisión.
31ValorEl primer campo de cada línea.
4notas.txtArgumentoUn archivo cuyas columnas están separadas con tabulador.
Resultado

Sale la primera columna de cada línea. Si el archivo no tiene tabuladores, cut no sabe dónde están las columnas y suelta las líneas enteras; agrega -s para que se salte las que no traen separador.

Cortar caracteres, sin separador de por medio

4 piezas
Lámina06 / 06
Comandocut -c 1-5 archivo.txt
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1cutComandoEl comando que corta una parte de cada línea.
2-cOpciónCharacters: cuentan por posición en vez de por campo.
31-5ValorDel carácter 1 al 5. La numeración empieza en 1 y el guion indica el rango.
4archivo.txtArgumentoEl archivo al que le quieres quitar todo lo que sobra a la derecha.
Resultado

Cada línea aparece recortada a sus primeros 5 caracteres. Funciona aunque el archivo no tenga ningún separador, porque aquí no importa dónde están las columnas sino cuántos caracteres te interesa ver.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-d--delimiter=SEPCambia el separador de campos. Por omisión es el tabulador.
-f--fields=LISTAImprime los campos indicados: -f 1 el primero, -f 1,3 el primero y el tercero, -f 2- del segundo en adelante.
-c--characters=LISTAImprime caracteres o columnas contando desde el 1. -c 1-5 son los primeros cinco, útil cuando no hay separador.
-b--bytes=LISTAIgual que -c pero por bytes. Ojo: los acentos y los emojis ocupan más de un byte y se pueden cortar a la mitad.
-s--only-delimitedNo imprime las líneas que no traen el separador. Sin esta opción, cut suelta esas líneas enteras.
--output-delimiter=TEXTOPone otro separador en la salida, por ejemplo un espacio o un punto y coma.
--complementInvierte la selección: imprime todo lo que no esté en la lista. Con -f --complement quitas las columnas que le digas.
§ 3

Fallas comunes

FallaRemedio
Contar los campos desde 0, como cut -f 0.La numeración empieza en 1. Con -f 0 cut se detiene con el error fields are numbered from 1; el primer campo es -f 1.
Usar -f sin -d en un archivo separado por comas y ver el archivo completo.El separador de omisión de cut es el tabulador. Como el archivo usa comas, cut no encuentra campos y devuelve cada línea entera. Agrega -d , y con -s para que se salte las líneas sin comas.
Combinar -f y -c en el mismo comando.cut responde cut: only one list may be specified. Solo se puede usar una de las tres listas: -f para campos, -c para caracteres o -b para bytes.
Intentar cortar una columna en un texto que no tiene separadores.cut no adivina dónde empieza una columna. Si el texto está alineado con espacios, usa -c con el rango de columnas que te interesa, o recurre a awk y sed, que sí pueden buscar patrones.
§ 4

Preguntas frecuentes

¿Cómo veo los nombres de usuario del sistema?
Con cut -d : -f 1 /etc/passwd. El -d : le dice que el separador son los dos puntos de ese archivo y el -f 1 que quieres el primer campo, que es el nombre de usuario.
¿Cuál es la diferencia entre -f y -c en cut?
-f corta por campos, o sea por pedazos separados con un delimitador, y necesita -d para saber cuál es. -c corta por posición: cuántos caracteres o columnas tomar, sin importar qué haya entre ellos. Con -f 1 y -d , tomas el primer campo; con -c 1-5 tomas los primeros cinco caracteres de cada línea.
¿Cómo saco la segunda columna de un CSV?
Con cut -d , -f 2 archivo.csv. La coma es el separador y el 2 es la columna que quieres. Ojo: cut no distingue el encabezado de los datos, así que también te imprime la línea de encabezados.
¿Por qué cut me imprime el archivo completo?
Lo más probable es que falte el -d con el separador correcto. cut usa el tabulador por omisión, y si tu archivo usa comas o dos puntos no encuentra ningún campo y devuelve cada línea sin recortar. Agrega -d , o -d : según el archivo.
¿Cómo quito una columna en vez de sacarla?
Con --complement: cut -d , -f 2 --complement datos.csv imprime todas las columnas menos la segunda.
§ 5

Ver también