En informática , cutes una utilidad de línea de comandos en sistemas operativos Unix y similares que se utiliza para extraer secciones de cada línea de entrada, generalmente de un archivo . Actualmente forma parte del paquete GNU coreutils y del sistema base BSD .
La extracción de segmentos de línea se puede realizar normalmente mediante bytes ( -b), caracteres ( -c) o campos ( -f) separados por un delimitador ( -d— el carácter de tabulación por defecto). Se debe proporcionar un rango en cada caso que consta de uno de los siguientes: N, N-M, N-( Nhasta el final de la línea), o -M(inicio de la línea a M), donde N y M se cuentan desde 1 (no hay ningún valor cero). Desde la versión 6, se genera un error si se incluye un valor cero. Antes de esto, el valor se ignoraba y se asumía que era 1.
Historia
La versión original de Bell Labs fue escrita por Gottfried WR Luderer. [1] [2] cut es parte de la Guía de Portabilidad X/Open desde la edición 2 de 1987. Fue heredada en la primera versión de POSIX.1 y la Especificación Única de Unix . [3] Apareció por primera vez en AT&T System III UNIX en 1982. [4]
La versión cutincluida en GNU coreutils fue escrita por David M. Ihnat, David MacKenzie y Jim Meyering. [5] El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes de GNU similares a Unix. [6] El comando cut también ha sido portado al sistema operativo IBM i . [7]
Ejemplos
Suponiendo un archivo llamado " file" que contiene las líneas:
foo:bar:baz:qux:quux uno:dos:tres:cuatro:cinco:seis:siete alfa:beta:gamma:delta:épsilon:zeta:eta:theta:iota:kappa:lambda:mu El rápido zorro marrón salta sobre el perro perezoso.
Para generar los caracteres del cuarto al décimo de cada línea:
$ cut -c 4 -10 archivo
:bar:ba :two:th ha:beta rápido
Para generar el quinto campo hasta el final de la línea de cada línea utilizando el carácter de dos puntos como delimitador de campo:
$ cut -d : " -f 5 - file
quux cinco:seis:siete epsilon:zeta:eta:theta:iota:kappa:lambda:mu el rápido zorro marrón salta sobre el perro perezoso
(tenga en cuenta que debido a que el carácter de dos puntos no se encuentra en la última línea, se muestra la línea completa)
La opción -despecifica un único carácter delimitador (en el ejemplo anterior, dos puntos) que sirve como separador de campos. La opción -fespecifica el rango de campos incluidos en la salida (aquí, los campos van desde cinco hasta el final). La opción -dpresupone el uso de option -f.
Para generar el tercer campo de cada línea utilizando el espacio como delimitador de campo:
$ cut -d " " -f 3 archivo
foo:bar:baz:qux:quux uno:dos:tres:cuatro:cinco:seis:siete alfa:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu marrón
(Tenga en cuenta que debido a que el carácter de espacio no se encuentra en las primeras tres líneas, se muestran estas líneas completas).
Para separar dos palabras que tengan cualquier delimitador:
$ línea = proceso.idproceso
$ corte -d "." -f1 <<< $ línea proceso $ corte -d "." -f2 <<< $ línea idproceso
Sintaxis
cortar [-b lista] [-c lista] [-f lista] [-n] [-d delim] [-s] [archivo]
Las banderas que se pueden utilizar incluyen:
- -b
- Bytes; una lista que sigue a -b especifica un rango de bytes que se devolverán, p. ej., devolvería los primeros 66 bytes de una línea. Nota: si se usa junto con -n , no se dividirán caracteres multibyte. No es necesario. -b solo funcionará en líneas de entrada de menos de 1023 bytes.
cut -b1-66 - -do
- Caracteres; una lista que sigue a -c especifica un rango de caracteres que se devolverán, por ejemplo, devolvería los primeros 66 caracteres de una línea
cut -c1-66 - -F
- Especifica una lista de campos, separados por un delimitador
- lista
- Lista de campos denotados con números enteros separados por comas o espacios en blanco, ordenados de forma incremental. El indicador - se puede proporcionar como abreviatura para permitir la inclusión de rangos de campos, por ejemplo, 4-6 para los rangos 4-6 o 5- como abreviatura para el campo 5 hasta el final, etc.
- -norte
- Utilizado en combinación con -b suprime las divisiones de caracteres multibyte.
- -d
- Delimitador; el carácter que sigue inmediatamente a la opción -d es el delimitador de campo que se utiliza junto con la opción -f ; el delimitador predeterminado es el tabulador . Los espacios y otros caracteres con significados especiales dentro del contexto del shell en uso deben ir entre comillas o con caracteres de escape según sea necesario.
- -s
- Omite las líneas que no contienen delimitadores de campo cuando se especifica -f , a menos que se indique lo contrario.
- archivo
- El archivo (y la ruta correspondiente, si es necesario) que se procesará como entrada. Si no se especifica ningún archivo, se utilizará la entrada estándar .
Véase también
Referencias
- ^ "cut(1) - Páginas del manual de OpenBSD".
- ^ "[TUHS] Un retrato de cut(1)". 15 de enero de 2020.
- ^ – Referencia de shell y utilidades, La especificación única de UNIX , versión 4 de The Open Group
- ^ – Manual de comandos generales de FreeBSD
- ^ – Manual de comandos generales de Linux
- ^ "Puertos Win32 nativos de algunas utilidades GNU". unxutils.sourceforge.net .
- ^ IBM . «Programación Qshell para IBM System i versión 7.2» (PDF) . IBM . Archivado (PDF) del original el 18 de septiembre de 2020 . Consultado el 5 de septiembre de 2020 .
Enlaces externos
- – Referencia de shell y utilidades, la especificación única de UNIX , versión 4 de The Open Group
- Página cortada de Softpanorama.
- Recortar campos seleccionados de cada línea de un archivo Un retrato de cut(1) y su contexto histórico.