LINUX

Comando de Linux Cut con ejemplos prácticos

comando linux cut

El comando de corte se usa en sistemas Linux y Unix para cortar partes y secciones de cada línea de un archivo 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 (delimitador).

En este tutorial, aprendemos el comando de corte de Linux con algunos ejemplos prácticos que puede usar en sus actividades diarias de línea de comandos.

Cortar comando y sintaxis

La sintaxis básica del comando de corte es la siguiente:

cut OPTION... [FILE]...

Comprobemos las opciones de corte y sin ninguna opción, el comando de corte no funcionará.

Opciones de corte

-f : Extraiga especificando un campo. El comando Cortar usa ‘TAB’ como delimitador de campo predeterminado.

-d : ‘Tab’ es el delimitador predeterminado y con esta opción puede usar un delimitador específico.

-b : Para extraer especificando un byte. También se puede especificar el rango de bytes.

-c : Cortar por carácter. Puede ser una lista de números separados por comas o un rango de números separados por un guión (-).

–complement : Esto complementará la selección

–output-delimiter : Para cambiar el delimitador de salida use la opción -output-delimiter = “delimiter”.

--only-delimited : Cortar no imprimirá líneas que no contengan delimitadores

Usaremos el siguiente archivo de texto llamado ‘content.txt’ y el archivo / etc / passwd a lo largo de este tutorial para ilustrar nuestros ejemplos.

$ cat content.txt 
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD

Cómo cortar por delimitador

La opción de corte más utilizada es una combinación de -d y -f. Básicamente, extraerá contenido basado en delimitadores específicos y campos enumerados.

Por ejemplo, lo siguiente imprime solo el primer campo de cada línea del archivo ‘/ etc / passwd’ usando el delimitador (:).

$ cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
...

El siguiente ejemplo donde usamos el espacio (“”) como delimitador y cortamos el primer campo del archivo llamado ‘content.txt’.

$ cut -d " " -f 1 content.txt 
Ubuntu
Microsoft
OsX
Unix
FreeBSD

Este ejemplo extrae más de un campo de un archivo específico. Aquí extraemos el primer y sexto campo usando el delimitador de dos puntos (:) del archivo ‘/ etc / passwd’ que tiene la cadena ‘/ bin / bash’:

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
root:/root
slax:/home/slax

Para mostrar el rango de campos, especifique el campo de inicio y el campo final separados por un guión (-) como se muestra a continuación:

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
slax:x:1000:1000:/home/slax:/bin/bash

Cómo complementar la selección de salida

Para complementar la lista de campos de selección, utilice --complement opción. Esta opción utiliza donde seleccionar todos los campos excepto los campos especificados.

En el siguiente ejemplo, el comando imprime todos los campos excepto el segundo campo en el archivo from ‘/ etc / passwd’:

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
root:0:0:root:/root:/bin/bash

Cómo especificar un delimitador de salida

Para especificar el delimitador de salida, utilice el --output-delimiter opción. El delimitador de entrada se especifica mediante -d opción y, por defecto, el delimitador de salida es el mismo que el delimitador de entrada.

Primero revisemos la salida sin usar el delimitador de salida de la siguiente manera:

$  cut -d: -f1,7  /etc/passwd |  sort |  uniq -u
_apt:/usr/sbin/nologin
backup:/usr/sbin/nologin
bin:/usr/sbin/nologin
daemon:/usr/sbin/nologin
dnsmasq:/usr/sbin/nologin
games:/usr/sbin/nologin
gnats:/usr/sbin/nologin
irc:/usr/sbin/nologin
landscape:/usr/sbin/nologin
list:/usr/sbin/nologin
lp:/usr/sbin/nologin
lxd:/bin/false

Ahora he agregado --output-delimiter La opción y el delimitador de entrada dos puntos (:) se reemplazan con el delimitador de salida ‘ESPACIO’ de la siguiente manera:

$  cut -d: -f1,7 --output-delimiter ' ' /etc/passwd |  sort |  uniq -u
_apt /usr/sbin/nologin
backup /usr/sbin/nologin
bin /usr/sbin/nologin
daemon /usr/sbin/nologin
dnsmasq /usr/sbin/nologin
games /usr/sbin/nologin
gnats /usr/sbin/nologin
irc /usr/sbin/nologin
landscape /usr/sbin/nologin
list /usr/sbin/nologin
lp /usr/sbin/nologin
lxd /bin/false

Veamos otro ejemplo, aquí usamos el delimitador de salida para imprimir en cada campo en una nueva línea.

Aquí usamos --output-delimiter como $’n’ que indica una nueva línea.

Verifique la salida:

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'n'
root
/root
/bin/bash
operator
/root
/sbin/nologin

Cómo cortar por cpersonajes

los -c La opción (columna) se utiliza para cortar por posición de carácter. Recuerde que ‘TABS’ y ‘Spaces’ también se tratan como caracteres.

Para imprimir el primer carácter de cada línea del archivo llamado content.txt, use a continuación:

$ cut -c 1 content.txt
U
M
O
U
F

En el siguiente ejemplo, mostraremos los caracteres del 1 al 7 (rango) de cada línea del archivo:

$ cut -c 1-7 content.txt
Ubuntu
Microso
OsX El
Unix
FreeBSD

Veamos cómo seleccionar columnas por posición inicial o final específica.

Para extraer columnas del segundo carácter al último carácter:

$ cut -c2- content.txt
buntu Linux
icrosoft Windows
sX El Capitan
nix
reeBSD

Para extraer columnas del primer carácter al cuarto carácter:

cut -c-4 content.txt
Ubun
Micr
OsX
Unix
Free

Cómo cortar por bytes

Utilizar el -b opción para seleccionar una parte de una línea especificando una posición de byte por números separados por comas (,). Con el guión puede especificar un rango de bytes.

El siguiente ejemplo cortó del primer, segundo y tercer bytes del archivo llamado ‘content.txt’:

$ cut -b 1,2,3 content.txt 
Ubu
Mic
OsX
Uni
Fre

También podemos listar con rangos usando el siguiente comando:

$ cut -b 1-3,5-7 content.txt 
Ubutu 
Micoso
OsXEl 
Uni
FreBSD

Algunos ejemplos prácticos de cortes

Cut es más práctico si se usa con una combinación de diferentes comandos de Linux o Unix.

Por ejemplo, desea extraer ‘USER’, ‘PID’ y “COMMAND” usando el comando ps:

 ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
USER PID COMMAND
0 676 /sbin/agetty -o -p -- u --keep-baud 115200,38400,9600 ttyS0 vt220
0 681 /sbin/agetty -o -p -- u --noclear tty1 linux
0 23174 -bash
0 26737 ps -L u n
0 26738 tr -s
0 26739 cut -d -f 2,3,14-

Tomemos otro ejemplo para extraer el valor ‘total’, ‘usado’ y ‘libre’ de la memoria y guardarlo en un archivo de texto usando un comando múltiple:

$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt
Output
$ cat memory.txt
985 86 234

Conclusión

El comando de corte se puede canalizar con muchos otros comandos de Linux o Unix. Se puede canalizar con uno o más filtros para un procesamiento de texto adicional.

Una de las limitaciones del comando de corte es que no admite la especificación de más de un carácter como delimitador. Los espacios en blanco múltiples se cuentan como separadores de campos múltiples y deben usar el comando tr antes de cortar para obtener la salida deseada.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar
Cerrar