Saltar al contenido

comando de corte en Linux con ejemplos

septiembre 22, 2021
gfg 200x200 min

El comando de corte en UNIX es un comando para cortar las secciones de cada línea de archivos y escribir el resultado en la salida estándar. Se puede utilizar para cortar partes de una línea posición del byte, carácter y campo. Básicamente, el comando de corte corta una línea y extrae el texto. Es necesario especificar la opción con el comando, de lo contrario da error. Si se proporciona más de un nombre de archivo, los datos de cada archivo se no precede por su nombre de archivo.

Sintaxis:

cut OPTION... [FILE]...

Consideremos dos archivos que tienen nombre state.txt y capital.txt contiene 5 nombres de los estados y capitales de la India, respectivamente.

$ cat state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh

Sin ninguna opción especificada, muestra un error.

$ cut state.txt
cut: you must specify a list of bytes, characters, or fields
Try 'cut --help' for more information.

Opciones y su descripción con ejemplos:

1. -b (byte): Para extraer los bytes específicos, debe seguir la opción -b con la lista de números de bytes separados por comas. El rango de bytes también se puede especificar mediante el guión (-). Es necesario especificar la lista de números de bytes, de lo contrario, da error. Pestañas y retrocesos se tratan como un carácter de 1 byte.

List without ranges
$ cut -b 1,2,3 state.txt
And
Aru
Ass
Bih
Chh

List with ranges
$ cut -b 1-3,5-7 state.txt
Andra
Aruach
Assm
Bihr
Chhtti

Utiliza una forma especial para seleccionar bytes desde el principio hasta el final de la línea:

In this, 1- indicate from 1st byte to end byte of a line
$ cut -b 1- state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh

In this, -3 indicate from 1st byte to 3rd byte of a line
$ cut -b -3 state.txt
And
Aru
Ass
Bih
Chh

2. -c (columna): Para cortar por carácter use la opción -c. Esto selecciona los caracteres dados a la opción -c. Puede ser una lista de números separados por comas o un rango de números separados por guión (-). Pestañas y retrocesos son tratados como un personaje. Es necesario especificar la lista de números de caracteres, de lo contrario da error con esta opción.

Sintaxis:

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

Aquí,k denota la posición inicial del personaje y norte denota la posición final del carácter en cada línea, si k y norte están separados por “-” de lo contrario, son solo la posición del carácter en cada línea del archivo tomado como entrada.

$ cut -c 2,5,7 state.txt
nr
rah
sm
ir
hti

El comando de corte anterior imprime el segundo, quinto y séptimo carácter de cada línea del archivo.

$ cut -c 1-7 state.txt
Andhra
Arunach
Assam
Bihar
Chhatti

El comando de corte anterior imprime los primeros siete caracteres de cada línea del archivo.

Cortar utiliza una forma especial para seleccionar caracteres desde el principio hasta el final de la línea:

$ cut -c 1- state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh

Above command prints starting from first character to end. Here in command only starting
position is specified and the ending position is omitted.

$ cut -c -5 state.txt
Andhr
Aruna
Assam
Bihar
Chhat

Above command prints starting position to the fifth character. Here the starting position
is omitted and the ending position is specified.

3. -f (campo): -C La opción es útil para líneas de longitud fija. La mayoría de los archivos Unix no tienen líneas de longitud fija. Para extraer la información útil, debe cortar por campos en lugar de columnas. La lista del número de campos especificado debe estar separada por comas. Los rangos no se describen con la opción -f. Corte usos pestaña como un delimitador de campo predeterminado, pero también puede funcionar con otro delimitador utilizando -D opción.
Nota: El espacio no se considera delimitador en UNIX.

Sintaxis:

$cut -d "delimiter" -f (field number) file.txt

Como en el archivo state.txt los campos están separados por un espacio si la opción -d no se usa entonces imprime la línea completa:

$ cut -f 1 state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh

Si se usa la opción -d, se considera el espacio como un separador o delimitador de campo:

$ cut -d " " -f 1 state.txt
Andhra
Arunachal
Assam
Bihar
Chhattisgarh
Command prints field from first to fourth of each line from the file.
Command:
$ cut -d " " -f 1-4 state.txt
Output:
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh

4. –complemento: Como su nombre indica, complementa la salida. Esta opción se puede utilizar en combinación con otras opciones, ya sea con -F o con -C.

$ cut --complement -d " " -f 1 state.txt
Pradesh
Pradesh
Assam
Bihar
Chhattisgarh

$ cut --complement -c 5 state.txt
Andha Pradesh
Arunchal Pradesh
Assa
Biha
Chhatisgarh

5. –delimitador de salida: Por defecto, el delimitador de salida es el mismo que el delimitador de entrada que especificamos en el corte con -D opción. Para cambiar el delimitador de salida use la opción –Output-delimiter = ”delimiter”.

$ cut -d " " -f 1,2 state.txt --output-delimiter="%"
Andhra%Pradesh
Arunachal%Pradesh
Assam
Bihar
Chhattisgarh

Aquí el comando de corte cambia delimitador (%) en la salida estándar entre los campos que se especifica usando la opción -f.

6. –versión: Esta opción se utiliza para mostrar la versión de corte que se está ejecutando actualmente en su sistema.

$ cut --version
cut (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David M. Ihnat, David MacKenzie, and Jim Meyering.

Aplicaciones de Cut Command

1. Cómo usar la cola con tubos (|): El comando de corte se puede canalizar con muchos otros comandos de Unix. En el siguiente ejemplo de salida del gato El comando se da como entrada al Corte comando con -F opción para ordenar los nombres de estado provenientes del archivo state.txt en orden inverso.

$ cat state.txt | cut -d ' ' -f 1 | sort -r
Chhattisgarh
Bihar
Assam
Arunachal
Andhra

También se puede canalizar con uno o más filtros para un procesamiento adicional. Como en el siguiente ejemplo, estamos usando el comando cat, head y cut y cuya salida se almacena en el nombre de archivo list.txt usando la directiva (>).

$ cat state.txt | head -n 3 | cut -d ' ' -f 1 > list.txt

$ cat list.txt
Andhra
Arunachal
Assam

Gracias Saloni Gupta por proporcionar más ejemplos.

close