GNU/Linux >> Tutoriales Linux >  >> Linux

10 ejemplos prácticos de comandos de corte de Linux para seleccionar columnas de archivos

El comando cut de Linux se utiliza para el procesamiento de texto. Puede usar este comando para extraer una parte del texto de un archivo seleccionando columnas.

Este tutorial proporciona algunos ejemplos prácticos del comando de corte que puede usar en sus actividades diarias de la línea de comandos.

Para la mayor parte del ejemplo, usaremos el siguiente archivo de prueba.

$ cat test.txt
cat command for file oriented operations.
cp command for copy files or directories.
ls command to list out files and directories with its attributes.

1. Seleccionar columna de caracteres

Para extraer solo una columna deseada de un archivo, use la opción -c. El siguiente ejemplo muestra el segundo carácter de cada línea de un archivo test.txt

$ cut -c2 test.txt
a
p
s

Como se vio arriba, los caracteres a, p, s son el segundo carácter de cada línea del archivo test.txt.

2. Seleccionar columna de caracteres usando rango

El rango de caracteres también se puede extraer de un archivo especificando la posición inicial y final delimitada con -. El siguiente ejemplo extrae los primeros 3 caracteres de cada línea de un archivo llamado test.txt

$ cut -c1-3 test.txt
cat
cp
ls

3. Seleccione la columna de caracteres utilizando la posición inicial o final

Se puede pasar la posición de inicio o la posición final al comando de corte con la opción -c.

Lo siguiente especifica solo la posición de inicio antes del '-'. Este ejemplo extrae desde el tercer carácter hasta el final de cada línea del archivo test.txt.

$ cut -c3- test.txt
t command for file oriented operations.
 command for copy files or directories.
 command to list out files and directories with its attributes.

Lo siguiente especifica solo la posición final después de '-'. Este ejemplo extrae 8 caracteres desde el principio de cada línea del archivo test.txt.

$ cut -c-8 test.txt
cat comm
cp comma
ls comma

Toda la línea se imprimiría si no especifica un número antes o después de '-', como se muestra a continuación.

$ cut -c- test.txt
cat command for file oriented operations.
cp command for copy files or directories.
ls command to list out files and directories with its attributes.

4. Seleccione un campo específico de un archivo

En lugar de seleccionar x número de caracteres, si desea extraer un campo completo, puede combinar las opciones -f y -d. La opción -f especifica qué campo desea extraer y la opción -d especifica cuál es el delimitador de campo que se usa en el archivo de entrada.

El siguiente ejemplo muestra solo el primer campo de cada línea del archivo /etc/passwd usando el delimitador de campo:(dos puntos). En este caso, el primer campo es el nombre de usuario. El archivo

$ cut -d':' -f1 /etc/passwd
root
daemon
bin
sys
sync
games
bala

5. Seleccione varios campos de un archivo

También puede extraer más de un campo de un archivo o salida estándar. El siguiente ejemplo muestra el nombre de usuario y el directorio de inicio de los usuarios que tienen el shell de inicio de sesión como "/bin/bash".

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

Para mostrar el rango de campos, especifique el campo inicial y el campo final como se muestra a continuación. En este ejemplo, estamos seleccionando los campos del 1 al 4, 6 y 7

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

6. Seleccionar campos solo cuando una línea contiene el delimitador

En nuestro ejemplo de /etc/passwd, si pasa un delimitador diferente que no sea:(dos puntos), el corte solo mostrará la línea completa.

En el siguiente ejemplo, hemos especificado el delimitador como | (tubería), y el comando de corte simplemente muestra la línea completa, incluso cuando no encuentra ninguna línea que tenga | (tubería) como delimitador.

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

Sin embargo, es posible filtrar y mostrar solo las líneas que contienen el delimitador especificado usando la opción -s.

El siguiente ejemplo no muestra ningún resultado, ya que el comando de corte no encontró ninguna línea que tenga | (tubería) como delimitador en el archivo /etc/passwd.

$ grep "/bin/bash" /etc/passwd | cut -d'|' -s -f1

7. Seleccionar todos los campos excepto los campos especificados

Para complementar la lista de campos de selección, utilice la opción –complemento.

El siguiente ejemplo muestra todos los campos del archivo /etc/passwd excepto el campo 7

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -s -f7
root:x:0:0:root:/root
bala:x:1000:1000:bala,,,:/home/bala

8. Cambiar delimitador de salida para visualización

De forma predeterminada, el delimitador de salida es el mismo que el delimitador de entrada que especificamos en la opción cut -d.

Para cambiar el delimitador de salida, use la opción –output-delimiter como se muestra a continuación. En este ejemplo, el delimitador de entrada es:(dos puntos), pero el delimitador de salida es # (hash).

$ grep "/bin/bash" /etc/passwd | cut -d':'  -s -f1,6,7 --output-delimiter='#'
root#/root#/bin/bash
bala#/home/bala#/bin/bash

9. Cambiar delimitador de salida a nueva línea

En este ejemplo, todos y cada uno de los campos de la salida del comando de corte se muestran en una línea separada. Todavía usamos –output-delimiter, pero el valor es $’\n’, lo que indica que debemos agregar una nueva línea como delimitador de salida.

$ grep bala /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n'
bala
/home/bala
/bin/bash

10. Combine Cut con otra salida de comando Unix

El poder del comando de corte se puede realizar cuando lo combina con el stdout de algún otro comando de Unix.

Una vez que domine el uso básico del comando de corte que hemos explicado anteriormente, puede usar sabiamente el comando de corte para resolver muchos de sus requisitos de manipulación de texto.

El siguiente ejemplo indica cómo puede extraer solo información útil de la salida del comando ps. También mostramos cómo filtramos la salida del comando ps usando grep y sed antes de que la salida final se le diera al comando cut. Aquí, hemos usado la opción de corte -d y -f que hemos explicado en los ejemplos anteriores.

$ ps axu | grep python | sed 's/\s\+/ /g' | cut -d' ' -f2,11-
2231 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
2311 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
2414 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon
2463 /usr/bin/python /usr/lib/system-service/system-service-d
3274 grep --color=auto python

Linux
  1. Comando mv en Linux:7 ejemplos esenciales

  2. Comando cp en Linux:7 ejemplos prácticos

  3. Comando de apagado de Linux:5 ejemplos prácticos

  4. 5 ejemplos prácticos de Head Command en Linux

  5. Ejemplos de comandos ln en Linux

16 ejemplos prácticos del comando Traceroute en Linux

20 ejemplos prácticos del comando Chown en Linux

15 ejemplos prácticos del comando de localización en Linux

12 ejemplos prácticos de In Command en Linux

15 ejemplos prácticos del comando Rsync en Linux

5 ejemplos prácticos de Tail Command en Linux