Comando de corte de Linux

Comando de corte de Linux

Considere la siguiente tabla de empleados, producida en un editor de texto con una fuente de ancho fijo, como Courier:

Nombre Fecha de nacimiento Fecha de nacimiento Especialidad Fecha de Empleo Tiempo empleado
John 11-05-91 10:11:12 Ingeniero 12-06-14 13:14:15
Pablo 16-16-86 16:17:18 Contador 06-19-15 19:20:21
Péter 07-20-81 Carpintero 08-21-16
María 22:23:24 Arquitecto 01:02:03
Susan 17-17-87 17:22:36 Secretario 21-49-55 08:43:32

Suponga que estos datos están en un archivo llamado empleado.txt, en un directorio de usuario de Linux. Hay seis columnas de texto con seis encabezados, que son nombre, fecha de nacimiento, hora de nacimiento, etc. Hay seis filas que consisten en una fila de encabezado y cinco filas de datos. Entonces, esta es una tabla de columnas y filas (líneas). El contenido de cada celda de tabla se llama campo. Un campo también es una subtracción. Dado que se ha utilizado una fuente de ancho fijo, hay columnas de caracteres. Cada columna de texto tiene columnas de caracteres. Entonces, hay columnas de caracteres y columnas de campos.

Para escribir la tabla, comience con la fila de encabezado. Escriba el primer campo y presione la tecla Tab en el teclado. Escriba el campo siguiente y presione la tecla Tab. Continúe de esta manera hasta después del último campo de encabezado. Presione la tecla ENTER. Cuando se presiona la tecla TAB, el personaje '\ t' se inserta en el código de archivo, no visto por el usuario. Sin embargo, el usuario lo ve como un espacio (que puede ser largo). Cuando se presiona la tecla ENTER al final de la línea, el carácter, '\ n' se inserta en el código de archivo, no visto por el usuario. La tecla Tab se cuenta como un personaje.

Cada una de las líneas de datos se escribe de la misma manera. Sin embargo, si un campo está en blanco, debe llenarse presionando la tecla de barra de espacio hasta que la tecla Tab se presione para ir a la siguiente columna de texto; para que el comienzo del siguiente campo se alinee con el comienzo de su columna de texto.

Para el editor de texto de Ubuntu, la tecla Tab abarca ocho caracteres. Entonces, cuando se presiona la tecla TAB, el número de caracteres que agrega es tal que si el campo estuviera lleno de caracteres, el número de caracteres sería un múltiplo de ocho. No olvide que al final de una línea, la tecla ENTER debe presionarse, y esta acción inserta un carácter en el código, no visto por el usuario. Cuando se presiona la tecla Tab, se inserta un solo carácter en el código, no visto por el usuario. Entonces, la tecla Tab se cuenta como un personaje.

Las líneas son delimitadas por los personajes Newline. Los campos están delimitados por los caracteres de tabulación. Los campos no deben ser necesariamente tan clásicos como se describió anteriormente. El delimitador no debe ser necesariamente un personaje de pestaña. En la tabla anterior, ':' puede considerarse como un delimitador, en lugar de la pestaña. En este caso, las subcontratos en cada línea se volverán a asociar. Por ejemplo, en el campo de la pestaña de tiempo del cumpleaños, ':' Delimitaría dos columnas de caracteres (en ambos extremos). Para esta misma tabla, la primera línea y la línea para Peter, no tendrían ningún delimitador. Toda la línea de este tipo se convierte en su campo.

Delimitar las columnas de personajes puede atravesar los campos de pestañas. Por ejemplo, The Last ':' En el campo de la pestaña de tiempo de cumpleaños, y el primero ':' en el campo de pestaña empleado por el tiempo, delimita columnas de caracteres, campos de pestaña de cruce y los caracteres de pestaña. Otros personajes delimitadores como las comas también se pueden encontrar en otros archivos.

Contenido del artículo

  • Cortar sintaxis
  • Cortar columnas de campo
  • Cortar columnas de bytes
  • Cortar columnas de caracteres
  • Delimitador
  • La opción -s
  • La opción -Complement
  • Conclusión

Cortar sintaxis

El comando de corte copia columnas por caracteres o por campos, basados ​​en ciertas opciones y sus valores. También puede copiar filas, pero las condiciones para copiar filas son limitadas. Puede copiar un conjunto de columnas y filas; aún las condiciones para las filas involucradas son limitadas. Las filas son líneas. La sintaxis es:

Opción de corte ... [archivo] ..

Puede haber más de un archivo. Sin embargo, este tutorial usa solo un archivo cuyo nombre es empleado.txt en el directorio de usuario, y con el contenido anterior. Si no hay argumento de archivo, corte las lecturas de la entrada estándar. Cut es un comando de shell de Linux con diferentes opciones posibles. Algunas opciones toman valores.

El conteo de columnas comienza de 1 y no cero. Entonces, la primera columna de caracteres (izquierda) es la columna 1; La segunda columna de caracteres es la columna 2; La tercera columna de caracteres es la columna 3, y así sucesivamente. La primera columna de campo (izquierda) es la columna de campo 1; La segunda columna de campo es la columna de campo 2; La tercera columna de campo es la columna 3 de campo, y así sucesivamente.

Entonces, el comando de corte copia secciones de las líneas en un archivo, como se ha señalado. Normalmente imprime el resultado en la salida estándar.

Cortar campos

Cortar campos significa copiar campos. El archivo original permanece intacto. La opción -f se usa para esto, donde F significa campo. -F usa el carácter de pestaña como su delimitador. Entonces, en

$ CUT -F 1,3 Empleado.TXT

-F significa que el comando copia campos y no caracteres o bytes. El valor para -f está separado por 1 y 3 por comas y sin espacio. Esto significa enviar a la salida estándar, columnas de campo 1 y 3. El resultado es:

Nombre Fecha de nacimiento
John 10:11:12
Pablo 16:17:18
Péter
María 22:23:24
Susan 17:22:36

Si se necesitaran columnas de campo, 1, 3, 5, entonces el valor para -F habría sido 1,3,5 números separados por comas, y sin espacio. Así es como se pueden elegir las columnas de campo. En este caso, Tab es el delimitador.

Rango de columnas de campo

El siguiente comando selecciona columnas de campo de la columna de campo, 2 a la columna de campo, 5, inclusive:

$ CUT -F 2-5 Empleado.TXT

La salida es:

Fecha de nacimiento Fecha de nacimiento Especialidad Fecha de Empleo
11-05-91 10:11:12 Ingeniero 12-06-14
16-16-86 16:17:18 Contador 06-19-15
07-20-81 Carpintero 08-21-16
22:23:24 Arquitecto
17-17-87 17:22:36 Secretario 21-49-55

Tenga en cuenta el guión entre 2 y 5 para indicar el rango.

Copiar desde un número de campo, n y arriba

El siguiente comando copia de la quinta columna de campo y arriba:

$ CUT -F 5- Empleado.TXT

Tenga en cuenta el guión justo después de las 5, sin espacio en el medio. El resultado es:

Fecha de Empleo Tiempo empleado
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Copiar debajo del número de campo, n

El siguiente comando, copia la segunda columna de campo y las que se encuentran a continuación:

$ CUT -F -2 Empleado.TXT

Tenga en cuenta el guión justo antes de las 2, sin espacio en el medio. El resultado es:

Nombre Fecha de nacimiento
John 11-05-91
Pablo 16-16-86
Péter 07-20-81
María
Susan 17-17-87

Cortar columnas de bytes

Las columnas de bytes se copian de manera similar a las columnas de campo. Si el código ASCII está en vigencia, entonces un byte es un carácter. En este caso, una pestaña (\ t) es un personaje, y si se copia, tendrá el efecto de llevar el cursor a donde debería estar el noveno personaje. La opción para bytes es -b. El siguiente comando ilustra esto para las columnas de la segunda, tercera y cuarto byte (carácter):

$ CUT -B 2,3,4 Empleado.TXT

La salida es:

ame
ohn
AUL
Ete
ary
EE.UU

Efecto de la pestaña

El siguiente comando muestra columnas de byte del primero al décimo:

$ CUT -B 1-10 Empleado.TXT

La salida es:

Nombre Fecha
John 11-05
Pablo 03-
Péter
María 07-2
Susan 04-1

El número de bytes (caracteres) en cada fila no es el mismo porque (a) hay dos personajes espaciales después de Paul, en el campo de Paul; y (b) el personaje de la pestaña se cuenta como un personaje (y tiene su efecto).

Cortar columnas de caracteres

Columnas de caracteres se manejan de la misma manera que las columnas de bytes. De hecho, al tratar con la codificación de caracteres de múltiples bytes, use caracteres, en lugar de bytes. La opción para los personajes es -c. Los siguientes dos comandos reproducen las dos salidas anteriores (en orden):

$ CUT -C 2,3,4 Empleado.TXT
$ CUT -C 1-10 Empleado.TXT

Delimitador

En lugar de usar el carácter de pestaña para separar substrucciones, delimitadores como ':' ','-',', ', ", etc. puede ser usado. Tal delimitador vuelve a participar sub-strings que forman la línea. En otras palabras, en lugar de los campos separados por el carácter de pestaña, están separados por el nuevo delimitador. Los comandos en este caso son similares a los comandos de campo con la opción -f, pero con la opción -d para delimitador, incluida. El siguiente comando copia los dos primeros campos según el delimitador '-'.

$ Cut -d ' -' -f 1,2 Empleado.TXT

La salida es:

Nombre Fecha de nacimiento Fecha de nacimiento Especialidad Fecha de Empleo Tiempo empleado
John 11-05
Pablo 03-16
Péter 07-20
María 22:23:24 Arquitecto 01:02:03
Susan 04-17

Este resultado es lógicamente correcto. Se ha mostrado toda la primera fila, ya que no tiene '-'. Se ha mostrado toda la quinta fila, ya que no tiene '-'. El personaje de la pestaña ahora es solo un personaje, aunque todavía tiene su efecto. La fila para Paul, por ejemplo, "Paul 03" es ahora un campo y "16" es el segundo campo. Con el delimitador '-', las alineaciones verticales para los nuevos campos son pobres. Se han devuelto dos campos, separados por '-'. '-' se ha vuelto a mostrar.

Las primeras y quinta filas que no tienen los delimitadores se pueden eliminar con la opción -s. Recuerde, las filas en este tema son líneas.

La opción -s

El resultado anterior no debe tener la primera y quinta línea. La opción -s elimina las líneas que no tienen el delimitador. Con la opción -s, el comando anterior se convierte en:

$ Cut -S -D ' -' -f 1,2 Empleado.TXT

Se obtiene un resultado más satisfactorio, es decir:

John 11-05
Pablo 03-16
Péter 07-20
Susan 04-17

Las dos nuevas columnas de campo reartitionadas ahora se ven claramente.

La opción -Complement

Esto copia los complementos para las columnas de los bytes, caracteres o campos elegidos. El siguiente comando copia los dos últimos campos (por Tab Delimiter), en lugar de los primeros cuatro:

$ Cut - -COMPLEMENT -F -4 Empleado.TXT
Fecha de Empleo Tiempo empleado
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Conclusión

El comando de corte copia columnas de bytes o de caracteres o de subcontratos, fuera de las líneas de texto en un archivo. Por defecto, envía las partes seleccionadas de las líneas a la salida estándar. Una subtracción delimitada es un campo. Por defecto, el delimitador para las subvensas es el carácter de pestaña. Sin embargo, eso se puede cambiar. Un delimitador como '-' o ':' o ", etc. puede ser usado. Cuando se hace eso, la línea se reparta en diferentes subcontras. La opción -s se puede usar para eliminar de la salida, líneas que no tienen el delimitador.