Tutoriales

Comando Cortar – Wiki de secuencias de comandos de Shell

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:

  1. byte
  2. caracteres
  3. 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&section=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:

Un estado de salida del comando Cortar
valor descripción
Cero (0) É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í:

Opciones de edición de GNU / Linux
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.

Ver también

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