Hay muchas utilidades disponibles en los sistemas Linux y Unix que le permiten procesar y filtrar archivos de texto. cut
es una utilidad de línea de comandos que le permite cortar partes de líneas de archivos específicos o datos canalizados e imprimir el resultado en una salida estándar. Se puede usar para cortar partes de una línea por delimitador, posición de byte y carácter.
En este artículo, le mostraremos cómo usar el cut
comando a través de ejemplos prácticos y explicaciones detalladas de las opciones más comunes.
Cómo usar el comando de corte #
La sintaxis para cut
comando es el siguiente:
Las opciones que le dicen a cut
si usar un delimitador, la posición de un byte o un carácter al cortar partes seleccionadas, las líneas son las siguientes:
Puede usar una, y solo una de las opciones enumeradas anteriormente.
Otras opciones son :
-
-d
(--delimiter
) – Especifique un delimitador que se utilizará en lugar del predeterminado » TAB ”delimitador. -
--complement
: complementa la selección. Cuando se usa esta opción,cut
muestra todos los bytes, caracteres, o campos excepto el se lected. -
-s
(--only-delimited
) – Por defectocut
imprime las líneas que no contienen ningún carácter delimitador. Cuando se usa esta opción,cut
no imprime líneas que no contienen delimitadores. -
--output-delimiter
– El comportamiento predeterminado decut
es utilizar el delimitador de entrada como delimitador de salida. Esta opción le permite especificar una cadena de delimitador de salida diferente.
El comando cut
puede aceptar cero o más nombres de ARCHIVO de entrada. Si no se especifica FILE
, o si FILE
es -
, cut
leerá desde la entrada estándar.
El argumento LIST
pasado al -f
, las opciones -b
y -c
pueden ser un número entero, varios enteros separados por comas, un rango de números enteros o varios rangos de números enteros separados por comas . Cada rango puede ser uno de los siguientes:
-
N
el enésimo campo, byte o carácter, comenzando por 1. -
N-
desde el enésimo campo, byte o carácter, hasta el final de la línea. -
N-M
desde el enésimo al campo, byte o carácter Mth. -
-M
del primero al campo, byte o carácter Mth.
Cómo cortar por campo #
Para especificar los campos que deben cortarse, invoque el comando con la opción -f
. Cuando no se especifica, el delimitador predeterminado es «TAB».
En los siguientes ejemplos, usaremos el siguiente archivo. Los campos están separados por tabulaciones.
Por ejemplo, para mostrar el primer y tercer campo, usaría:
O si desea mostrar del primer al cuarto campo:
Cómo cortar según un delimitador #
Para cortar según un delimitador, invoque el comando con -d
, seguida del delimitador que desea utilizar.
Por ejemplo, para mostrar el primer y tercer campo utilizando «:» como delimitador, debe escribir:
Puede utilizar cualquier carácter individual como delimitador. En el siguiente ejemplo, usamos el carácter de espacio como delimitador e imprimimos el segundo campo:
Cómo complementar la selección #
Para complementar la lista de campos de selección use la opción --complement
. Esto imprimirá solo aquellos campos que no estén seleccionados con la opción -f
.
El siguiente comando imprimirá todos los campos excepto el primero y el tercero:
Cómo especificar un delimitador de salida #
Para especificar el delimitador de salida, use el --output-delimiter
opción. Por ejemplo, para establecer el delimitador de salida en _
, usaría:
Cómo cortar por bytes y caracteres #
Antes de continuar, hagamos una distinción entre bytes y caracteres.
Un byte tiene 8 bits y puede representar 256 valores diferentes. Cuando se estableció el estándar ASCII, tuvo en cuenta todas las letras, números y símbolos necesarios para trabajar con inglés. La tabla de caracteres ASCII tiene 128 caracteres y cada carácter está representado por un byte.Cuando las computadoras comenzaron a ser accesibles a nivel mundial, las empresas de tecnología comenzaron a introducir nuevas codificaciones de caracteres para diferentes idiomas. Para los idiomas que tienen más de 256 caracteres, no fue posible una asignación simple de 1 a 1. Esto genera diferentes problemas, como compartir documentos o navegar por sitios web, y se necesitaba un nuevo estándar Unicode que pudiera manejar la mayoría de los sistemas de escritura del mundo. UTF-8 fue creado para resolver estos problemas. En UTF-8, no todos los caracteres se representan con 1 byte. Los caracteres se pueden representar con 1 byte a 4 bytes.
La opción -b
(--bytes
) le dice al comando que corte secciones de cada línea especificada por posiciones de bytes dadas.
En los siguientes ejemplos, estamos usando el carácter ü
que ocupa 2 bytes.
Seleccione el quinto byte:
Seleccione los bytes quinto, noveno y decimotercero:
Seleccione el rango del 1 ° al 5 ° byte:
En el momento de escribir este artículo, la versión de cut
incluida en GNU coreutils no tiene una opción para cortar por caracteres. Cuando se usa la opción -c
, cut
se comporta de la misma manera que cuando se usa la opción -b
.
Ejemplos de corte #
El comando cut
generalmente se usa en combinación con otros comandos a través de tuberías. Aquí hay algunos ejemplos:
Obtenga una lista de todos los usuarios #
La salida del comando getent passwd
se pasa a cut
, que imprime el primer campo utilizando :
como delimitador.
El resultado muestra una lista de todos los usuarios del sistema.
Ver los 10 comandos más utilizados #
En el siguiente ejemplo, se usa cut
para quitar los primeros 8 bytes de cada línea de la history
salida del comando.
Conclusión #
El comando cut
se usa para mostrar campos seleccionados de cada línea de archivos dados o la entrada estándar.
Aunque es muy útil, cut
tiene algunas limitaciones. No admite la especificación de más de un carácter como delimitador y no admite varios delimitadores.