
Utilizar el Comando de corte para cortar y mostrar partes seleccionadas de líneas en Linux y Unix.
propósito
Usamos el comando cut para cortar lo siguiente del archivo o stdin y escribir en otro archivo o stdout:
- byte
- caracteres
- Campos de cada línea de un archivo
En otras palabras, use el comando Cortar para cortar los campos seleccionados de cada línea de un archivo.
sintaxis
La sintaxis es:
cut filename
cut [options] filename
command | cut
command1 | command2 | cut > output
Ejemplos de
Consideremos lo siguiente os.txt Archivo:
#OS_NAME|DESCRIPTION|Type|First release date# CentOS|Community Enterprise Operating System|Linux|14 May 2004 RHEL|Red Hat Enterprise Linux|Linux|February 22, 2000 Debian|Debian GNU/Linux|Linux|September 1993 FreeBSD|N/A|BSD|1 November 1993 Alpine|N/A|Linux|August 2005 AIX|Advanced Interactive eXecutive|Unix|February 1986 macOS|Mac OS X or OS X|Unix|March 24, 2001
Si solo necesita el nombre del sistema operativo, use el comando cut para obtener solo esta información:
¿Qué tal imprimir tanto el nombre del sistema operativo como su descripción? Intento
Ese -D estado de la opción que se utilizará ‘|‘Carácter como separador de campo. Lo mejor sería incluir caracteres con un significado especial en el shell entre comillas, como: B. el espacio o ‘|‘.Ese -F La opción define una lista de campos que se supone que están separados en el archivo por un delimitador, que por defecto es el carácter de tabulación. Sin embargo, tenemos eso -D Opción para sobrescribir los caracteres de tubería (|). En otras palabras, usamos el comando de corte para cortar múltiples campos en cada línea de un archivo llamado. para mostrar os.txt.
Seleccionar partes de una línea
El siguiente comando muestra el nombre de inicio de sesión de Linux y los campos de nombre de usuario completo en el archivo de contraseña del sistema. Estos son los campos primero y quinto, separados por dos puntos:
cut -d ':' -f 1,5 /etc/passwd
# filter out user name 'vivek' using the grep command #
cut -d ':' -f 1,5 /etc/passwd | grep vivek
Salida de ejemplo del último comando:
vivek:Vivek Gite
Definir las posiciones de los personajes
Considere las siguientes líneas de entrada de log.txt Archivo:
22/Jul/2020:05:27:11 +0000 "POST /wiki/api.php HTTP/1.1" 200 87 23/Aug/2021:05:27:27 +0000 "POST /wiki/api.php HTTP/1.1" 499 0 01/Sep/2021:05:27:27 +0000 "POST /wiki/index.php?title=Cut_command&action=submit HTTP/1.1" 302 5 13/Oct/2020:05:27:27 +0000 "GET /guide/Cut_command HTTP/1.1" 200 6554 22/Jul/2021:05:30:47 +0000 "GET /wiki/index.php?title=Cut_command&action=edit§ion=4 HTTP/1.1" 200 6
Si quisiéramos extraer los tres caracteres que indican el mes, estos serían los caracteres de las posiciones 4, 5 y 6. Tenga en cuenta que la numeración de las columnas comienza en 1 cuando se utiliza la herramienta de corte. Entonces podríamos emitir el siguiente comando de corte para extraer estos tres caracteres de cada línea:
# get month
cut -c 4-6 log.txt
# get year
cut -c 8-11 log.txt
# get day
cut -c 1-2 log.txt
Ese -c área o -c lista El comando se usa para especificar una lista o rango. Por ejemplo, opción -c 1-40, el comando de corte escribe los primeros 40 caracteres en cada línea del archivo.
Especificar posiciones de bytes
La sintaxis es la siguiente:
cut -b range file
cut -b list file
cut -b 1-3 filename
Ese -C y -B Las opciones son casi las mismas. Sin embargo, la internacionalización cambiará eso con -C Oportunidad.
Usar cortar con otros comandos
El comando who muestra información sobre los usuarios que han iniciado sesión actualmente, incluida su dirección IP (o nombre de host). Por ejemplo:
Salidas:
vivek pts/0 2021-07-22 05:10 (192.168.2.25) ubuntu pts/0 2021-07-22 05:13 (172.xxx.yyy.zzz)
Veamos los nombres y las horas de inicio de sesión de los usuarios que han iniciado sesión actualmente:
Esto es lo que veo:
vivek 05:10 ubuntu 05:13
Para enumerar las citas de los sábados para el mes actual:
Salidas de muestra:
Sa 3 10 17 23 31
Estado de salida
Este comando devuelve los siguientes valores o estados de salida:
valor | descripción |
---|---|
Cero () | Éxito, es decir, todos los archivos de entrada se generaron correctamente. |
No cero (> 0) | Ha ocurrido un error / error. |
Aquí se explica cómo usar el estado de salida con el comando if en nuestro script para averiguar si el comando de corte fue exitoso o no.
#!/bin/bash
# some logic
# run cut to see if we can grab VLAN hostnames else die
if ! cut -d ':' -f 1,16 ~/.cluster.conf >/dev/null
then
echo "VLAN host name not found in ~/.cluster.conf"
exit 1
fi
# rest of the script continue of no error occurred with the the cut command
rsync ....
consigue ayuda
Ingrese el comando man así:
oportunidad | descripción |
---|---|
-b LISTA | Seleccione solo estos bytes. |
-c LISTA | Seleccione solo estos caracteres. |
-d 'DELIM' | Utilice DELIM en lugar de TAB como separador de campo. |
-f LISTA | Seleccione solo estos campos; también imprime cualquier línea que no contenga un separador, a menos que el -S Se especifica la opción. |
--completo | Complete el conjunto de bytes, caracteres o campos seleccionados |
-S | No imprima líneas que no contengan separadores. |
--output-delimiter = STRING | Usa STRING como separador de salida. El separador de entrada se utiliza de forma predeterminada. |
-Con | El separador de línea es NUL, sin salto de línea. |
--Ayuda | Ver y salir de esta ayuda. |
--Ejecución | Salida de información de versión y salida. |