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
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.
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:
1,3,5)1-4)
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.
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
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á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.
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.
1.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.
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.Extract specific characters Extract specific characters
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.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”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 ha omitido la posición de inicio y el comando imprime desde la posición de inicio hasta la posición final indicada.
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
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-dcuando su fichero no está separado por tabulaciones.
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.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;
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.
-f o -c)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).1 –complement
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.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='%'
By default, these two fields would be printed with a space between them.
The original file remains unchanged, only the displayed output is formatted differently.
2024-02-16_13-18
–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
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.
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
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