El comando cut 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 por posición de 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 no van precedidos por su nombre de archivo.
Sintaxis:
cut OPTION... ...
Consideremos dos archivos con el nombre state.txt y capital.txt contiene 5 nombres de los estados indios y mayúsculas respectivamente.
$ cat state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Sin ninguna opción especificada, muestra un error.
$ cut state.txtcut: you must specify a list of bytes, characters, or fieldsTry "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 una lista de números de bytes; de lo contrario, da error. Las tabulaciones y los retrocesos se tratan como un carácter de 1 byte.
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.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhIn this, -3 indicate from 1st byte to 3rd byte of a line$ cut -b -3 state.txtAndAruAssBihChh
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 (-). Las pestañas y los retrocesos se tratan 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 filename
Aquí, k denota el posición inicial del carácter yn denota la posición final del carácter en cada línea, si kyn 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.txtnrrahsmirhti
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.txtAndhraArunachAssamBiharChhatti
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.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhAbove command prints starting from first character to end. Here in command only startingposition is specified and the ending position is omitted.$ cut -c -5 state.txtAndhrArunaAssamBiharChhatAbove command prints starting position to the fifth character. Here the starting positionis omitted and the ending position is specified.
3. La opción -f (campo): -c es útil para líneas de longitud fija. La mayoría de los archivos Unix no tienen fija- líneas de longitud. Para extraer la información útil, debe cortar por campos en lugar de columnas. Lista de los campos número especi fied debe estar separado por coma. Los rangos no se describen con la opción -f. cut usa tabulador como un delimitador de campo predeterminado, pero también puede trabajar con otro delimitador usando la opción -d.
Nota: El espacio no se considera como 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 no se usa la opción -d, entonces imprime la línea completa:
$ cut -f 1 state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Si se usa la opción -d, entonces se considera el espacio como un separador o delimitador de campo:
$ cut -d " " -f 1 state.txtAndhraArunachalAssamBiharChhattisgarh
Command prints field from first to fourth of each line from the file.Command:$ cut -d " " -f 1-4 state.txtOutput:Andhra PradeshArunachal PradeshAssamBiharChhattisgarh
4. –Complemento: Como su nombre indica, complementa la salida. Esta opción se puede usar en combinación con otras opciones con -f o con -c.
5. –Output-delimiter: Por defecto, el delimitador de salida es el mismo que el delimitador de entrada que especificamos en la opción cut con -d. Para cambiar el delimitador de salida use la opción –output-delimiter = ”delimiter”.
$ cut -d " " -f 1,2 state.txt --output-delimiter="%"Andhra%PradeshArunachal%PradeshAssamBiharChhattisgarh
Aquí el comando de corte cambia delimitador (%) en la salida estándar entre campos que se especifican mediante la opción -f.
6. –Version: esta opción se usa para mostrar la versión de cut que se está ejecutando actualmente en su sistema.
$ cut --versioncut (GNU coreutils) 8.26Packaged 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 del comando cut
1. Cómo usar la cola con tubos (|): El comando de corte se puede conectar con muchos otros comandos de Unix. En el siguiente ejemplo, la salida del comando cat se proporciona como entrada al comando cut con la opción -f para ordenar los nombres de estado que provienen del archivo state.txt en orden inverso.
$ cat state.txt | cut -d " " -f 1 | sort -rChhattisgarhBiharAssamArunachalAndhra
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.txtAndhraArunachalAssam
Gracias Saloni Gupta por proporcionar más ejemplos.