Cómo utilizar los comandos cat y tac de Linux
Fatmawati Achmad Zaenuri / Shutterstock.com
El cat
y tac
Los comandos muestran el contenido de los archivos de texto, pero hay más de lo que parece. Sumérjase un poco más y aprenda algunos trucos productivos de la línea de comandos de Linux.
Estos son dos pequeños comandos sencillos, que a menudo se descartan por ser solo eso: demasiado simples para ser de utilidad real. Pero una vez que sepa las diferentes formas en que puede usarlos, verá que son perfectamente capaces de hacer su parte justa del trabajo pesado cuando se trata de trabajar con archivos.
El comando del gato
cat
se usa para examinar el contenido de los archivos de texto y unir partes de archivos para formar un archivo más grande.
En un momento, en la era del acceso telefónico módem : Los archivos binarios a menudo se dividían en varios archivos más pequeños para facilitar la descarga. En lugar de descargar un archivo grande, retiró cada archivo más pequeño. Si un solo archivo no se descarga correctamente, simplemente recuperará ese archivo nuevamente.
Por supuesto, entonces necesitaba una forma de reconstituir la colección de archivos más pequeños en un solo archivo binario de trabajo. Ese proceso se llamó concatenación. Y ahí es donde cat
entró y de dónde toma su nombre.
Las conexiones de banda ancha y fibra han provocado que esa necesidad particular se desvanezca, al igual que los sonidos chirriantes de las llamadas telefónicas, así que, ¿qué queda para cat
¿hacer hoy? Mucho en realidad.
Visualización de un archivo de texto
Tener cat
listar el contenido de un archivo de texto en una ventana de terminal, use el siguiente comando.
Asegúrese de que el archivo sea un archivo de texto. Si intenta listar el contenido de un archivo binario en la ventana del terminal, los resultados serán impredecibles. Puede terminar con una sesión de terminal bloqueada o algo peor.
|_+_|
El contenido del archivo poem1.txt se muestra en la ventana de terminal.
Eso es solo la mitad del famoso poema. ¿Dónde está el resto? Aquí hay otro archivo llamado poem2.txt. Podemos hacer cat
enumere el contenido de varios archivos con un comando. Todo lo que tenemos que hacer es listar los archivos en orden en la línea de comando.
Eso se ve mejor; ahora tenemos el poema completo.
Usar gato con menos
Todo el poema está ahí, pero pasó por la ventana demasiado rápido para leer los primeros versos. Podemos canalizar la salida desde cat
en less
y desplácese hacia abajo por el texto a nuestro propio ritmo.
Anuncio publicitario
Ahora podemos movernos hacia atrás y hacia adelante a través del texto en una secuencia, aunque esté guardado en dos archivos de texto separados.
Numeración de líneas en un archivo
Podemos hacer que cat numere las líneas en el archivo a medida que se muestra. Para hacer esto, usamos el -n
(número) opción.
Las líneas están numeradas a medida que se muestran en la ventana del terminal.
No numere las líneas en blanco
Logramos tener las líneas numeradas con cat
, pero las líneas en blanco entre los versos también se están contando. Para tener las líneas de texto numeradas pero para ignorar las líneas en blanco, use el -b
Opción (número no en blanco).
Ahora las líneas de texto están numeradas y las líneas en blanco se omiten.
No muestre varias líneas en blanco
Si hay secciones de líneas consecutivas en blanco en un archivo, podemos preguntar cat
para ignorar todas las líneas en blanco menos una. Mira este archivo.
Anuncio publicitario
El siguiente comando causará cat
para mostrar solo una línea en blanco de cada grupo de líneas en blanco. La opción que necesitamos para lograr esto es la -s
opción (espacio en blanco).
Esto no afecta el contenido del archivo de ninguna manera; simplemente cambia la forma cat
muestra el archivo.
Pestañas de visualización
Si desea saber si los espacios en blanco son causados por espacios o tabulaciones, puede averiguarlo usando -T
opción (mostrar pestañas).
Las pestañas están representadas por los caracteres ^ I.
Visualización de los extremos de las líneas
Puede comprobar los espacios en blanco finales mediante el uso de -E
Opción (show-ends).
Los finales de las líneas están representados por el carácter $.
Concatenar archivos
No tiene sentido tener un poema guardado en dos archivos, con la mitad en cada uno. Unámoslos y creemos un nuevo archivo con el poema completo.
|_+_|
usemos cat
para comprobar nuestro nuevo archivo:
Anuncio publicitario
Nuestro nuevo archivo contiene el contenido de los otros dos archivos.
Agregar texto a un archivo existente
Eso es mejor, pero de hecho, no es el poema completo. Falta el último verso. El último verso de Jabberwocky es el mismo que el primer verso.
Si tenemos el primer verso en un archivo, podemos agregarlo al final del archivo jabberwocky.txt y tendremos el poema completo.
En el siguiente comando, tenemos que usar >>
, no solo >
. Si usamos un solo >
bien Sobrescribir jabberwocky.txt. No queremos hacer eso. Queremos adjuntar texto al final.
Revisemos el contenido del archivo jabberwocky.txt:
|_+_|
Y finalmente, todas las partes del poema están juntas.
Redirigir stdin
Puede redirigir la entrada desde el teclado a un archivo usando cat
. Todo lo que escribe se redirige al archivo hasta que presione Ctrl + D. Tenga en cuenta que usamos un solo >
porque queremos crear el archivo (o sobrescribirlo, si existe).
Anuncio publicitario
Podemos empezar a escribir tan pronto como emitamos el comando. Presionamos Ctrl + D cuando terminamos. Luego podemos verificar el contenido del nuevo archivo con:
|_+_|
Ese sonido como una turbina lejana probablemente sea Lewis Carroll girando en su tumba a gran velocidad.
El comando tac
tac
es similar a cat
, pero enumera el contenido de los archivos en orden inverso .
Veamos eso:
|_+_|
Y el archivo se muestra en la ventana de terminal en orden inverso. En este caso, no tiene ningún efecto sobre sus méritos literarios.
Usando tac con stdin
Utilizando tac
sin un nombre de archivo hará que opere en la entrada del teclado. Si presiona Ctrl + D, se detendrá la fase de entrada y tac mostrará en orden inverso lo que haya escrito.
Cuando se presiona Ctrl + D, la entrada se invierte y se muestra en la ventana de terminal.
Uso de tac con archivos de registro
Aparte de los trucos de salón de baja calidad, can tac
hacer algo útil? Sí puede. Muchos archivos de registro añaden sus entradas más recientes al final del archivo. Utilizando tac
(y, contradictoriamente, head
) podemos mostrar la última entrada en la ventana de terminal.
Usamos tac
para enumerar el archivo syslog al revés y canalizarlo a head
. Diciendo head
para imprimir solo la primera línea que recibe (que gracias a tac
es la última línea del archivo), vemos la última entrada en el archivo syslog.
head
imprime la última entrada del archivo syslog y luego sale.
Tenga en cuenta que head
sólo está imprimiendo una línea, como solicitamos, pero la línea es tan larga que se envuelve dos veces. Por eso parece que hay tres líneas de salida en la ventana de la terminal.
Usar tac con registros de texto
El último truco tac
tiene bajo la manga es una belleza.
Por lo general, tac
opera en archivos de texto trabajando a través de ellos línea por línea, de abajo hacia arriba. Una línea es una secuencia de caracteres terminada por un carácter de nueva línea. Pero podemos decir tac
para trabajar con otros delimitadores. Esto nos permite tratar fragmentos de datos dentro del archivo de texto como registros de datos.
Supongamos que tenemos un archivo de registro de algún programa que necesitamos revisar o analizar. Echemos un vistazo a su formato con less
.
Anuncio publicitario
Como podemos ver, hay un formato repetido para el archivo. Hay secuencias de tres líneas de hexadecimal valores. Cada conjunto de tres líneas hexadecimales tiene una línea de etiqueta que comienza = SEQ, seguida de una secuencia de dígitos.
Si nos desplazamos hasta el final del archivo, podemos ver que hay muchos de estos registros. El último tiene el número 865.
Supongamos que, por cualquier motivo, necesitamos trabajar con este archivo en orden inverso, registro de datos. Se debe conservar el orden de las tres líneas hexadecimales en cada registro de datos.
Tomaremos nota de que las últimas tres líneas del archivo comienzan con los valores hexadecimales 93, E7 y B8, en ese orden.
Usemos tac
para invertir el archivo. Es un archivo muy largo, por lo que lo integraremos en less
.
Eso invierte el archivo, pero no es el resultado que queremos. Queremos que el archivo se invierta, pero las líneas de cada registro de datos deben estar en su orden original.
Anuncio publicitario
Registramos anteriormente que las últimas tres líneas del archivo comienzan con los valores hexadecimales 93, E7 y B8, en ese orden. El orden de esas líneas se ha invertido. Además, las líneas = SEQ ahora son debajo cada conjunto de tres líneas hexadecimales.
tac
al rescate.
Analicemos eso.
El -s
La opción (separador) informa tac
lo que queremos usar como delimitador entre nuestros registros. Dice tac
no usar su carácter de nueva línea habitual, sino usar nuestro separador en su lugar.
El -r
(regex) opción dice tac
para tratar la cadena de separación como un expresión regular .
El -b
(antes) la opción causa tac
para listar el separador antes de cada registro en lugar de después de él (que es la posición habitual de su separador predeterminado, el carácter de nueva línea).
El -s
(separador) cadena ^=SEQ.+[0-9]+*$
se descifra de la siguiente manera:
El ^
carácter representa el comienzo de la línea. A esto le sigue =SEQ.+[0-9]+*$
. Esto instruye a tac
para buscar cada aparición de = SEQ. al comienzo de una línea, seguido de cualquier secuencia de dígitos (indicado por [0-9]
), y seguido de cualquier otro conjunto de caracteres (indicado por *$
).
Estamos canalizando todo en less
, como de costumbre.
Nuestro archivo ahora se presenta en orden inverso con cada línea de etiqueta = SEQ enumerada antes de sus tres líneas de datos hexadecimales. Las tres líneas de valores hexadecimales están en su original orden dentro de cada registro de datos.
Anuncio publicitarioPodemos comprobar esto simplemente. El primer valor de las primeras tres líneas de hexadecimal (que eran las últimas tres líneas antes de que se invirtiera el archivo) coincide con los valores de los que tomamos un registro anterior: 93, E7 y B8, en ese orden.
Eso es todo un truco para una ventana de terminal de una sola línea.
Todo tiene un propósito
En el mundo de Linux, incluso los comandos y utilidades aparentemente más simples pueden tener propiedades sorprendentes y poderosas.
La filosofía de diseño de las utilidades simples. que hacen una cosa bien , y que interactúa fácilmente con otras utilidades, ha dado lugar a algunos pequeños comandos extraños, como tac
. A primera vista, parece un poco extraño. Pero cuando miras debajo de la superficie, hay un poder inesperado que puedes aprovechar para tu ventaja.
O, como dice otra filosofía, no desprecies a la serpiente por no tener cuernos, porque ¿quién puede decir que no se convertirá en dragón?
RELACIONADO: Las mejores computadoras portátiles Linux para desarrolladores y entusiastas
LEER SIGUIENTE- & rsaquo; Cómo usar el comando rev en Linux
- & rsaquo; 10 comandos básicos de Linux para principiantes
- & rsaquo; The Computer Folder Is 40: Cómo Xerox Star creó el escritorio
- & rsaquo; Cyber Monday 2021: las mejores ofertas de Apple
- & rsaquo; Cómo encontrar su Spotify Wrapped 2021
- & rsaquo; 5 sitios web que todo usuario de Linux debería marcar
- & rsaquo; Cyber Monday 2021: las mejores ofertas tecnológicas
- & rsaquo; Funciones frente a fórmulas en Microsoft Excel: ¿Cuál es la diferencia?
Dave McKay usó computadoras por primera vez cuando la cinta de papel perforada estaba de moda, y ha estado programando desde entonces. Después de más de 30 años en la industria de las tecnologías de la información, ahora es un periodista de tecnología a tiempo completo. Durante su carrera, ha trabajado como programador autónomo, gerente de un equipo de desarrollo de software internacional, gerente de proyectos de servicios de TI y, más recientemente, como oficial de protección de datos. Su escrito ha sido publicado por howtogeek.com, cloudsavvyit.com, itenterpriser.com y opensource.com. Dave es un evangelista de Linux y un defensor del código abierto.
Leer biografía completa