GNU/Linux >> Tutoriales Linux >  >> Linux

Comando de corte de Linux con ejemplos prácticos

El comando de corte se usa en los 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 usar 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.

Comando de corte y sintaxis

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

cut OPTION... [FILE]...

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

Opciones de corte

-f :Extraer especificando un campo. El comando Cortar usa 'TAB' como delimitador de campo predeterminado.

-d :'Tab' es el delimitador predeterminado y al usar 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 :Para 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 según un delimitador específico 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 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 inicial 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, use --complement opción. Esta opción usaba dónde 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 --output-delimiter opción. El delimitador de entrada se especifica mediante -d 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 de dos puntos (:) se reemplazan con el delimitador de salida 'SPACE' 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’ lo que indica una nueva línea.

Verifique la salida:

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=

Cómo cortar por caracteres

El -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 lo siguiente:

$ 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 desde el segundo carácter hasta el ú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

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

El siguiente ejemplo cortado del 1.er, 2.º y 3.er byte 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 corte

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

Por ejemplo, desea extraer 'USUARIO', 'PID' y "COMANDO" 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 el 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 procesamiento de texto adicional.

Una de las limitaciones del comando de corte es que no admite especificar más de un carácter como delimitador. Múltiples espacios en blanco se cuentan como separadores de campos múltiples y deben usar el comando tr antes de cortar para obtener el resultado deseado.

\n' root /root /bin/bash operator /root /sbin/nologin

Cómo cortar por caracteres

El -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 lo siguiente:

 

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

 

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

Para extraer columnas desde el segundo carácter hasta el último carácter:

 

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

 

Cómo cortar por bytes

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

El siguiente ejemplo cortado del 1.er, 2.º y 3.er byte del archivo llamado 'content.txt':

 

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

 

Algunos ejemplos prácticos de corte

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

Por ejemplo, desea extraer 'USUARIO', 'PID' y "COMANDO" usando el comando ps:

 

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

 

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 procesamiento de texto adicional.

Una de las limitaciones del comando de corte es que no admite especificar más de un carácter como delimitador. Múltiples espacios en blanco se cuentan como separadores de campos múltiples y deben usar el comando tr antes de cortar para obtener el resultado deseado.


Linux
  1. Cómo usar el comando Hexdump de Linux con ejemplos prácticos

  2. Comando JQ en Linux con ejemplos

  3. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

  4. cortar ejemplos de comandos en Linux

  5. ¿Cuáles son los significados de /usr/sbin, /usr/local/sbin y /usr/local/bin?

15 comandos ps de Linux con ejemplos

Comando Find de Linux con ejemplos prácticos

12 ejemplos prácticos de In Command en Linux

Comando de espera en Linux explicado con ejemplos prácticos

Comando Uniq en Linux explicado con ejemplos

Comando lsof de Linux explicado con 12 ejemplos prácticos