Manipulación de archivos de texto

Como ya mencionamos con anterioridad, la vida de un administrador de sistemas Linux está muy ligada al manejo de archivos de texto. Esto es particularmente importante debido a que es en ese formato que se presentan los archivos de configuración y los logs -registros de actividad- del sistema.

Mostrar el comienzo o el fin de un archivo con head o tail

En algunas ocasiones (por ejemplo, al inspeccionar los primeros o últimos eventos registrados en un log) nos puede interesar mostrar las primeras o las últimas líneas de un archivo, lo cual podemos hacer con los comandos head o tail. Sin argumentos, estas dos herramientas nos permitirán visualizar las primeras o últimas 10 líneas de un archivo, respectivamente. También podemos utilizar la opción -n para cambiar la cantidad de líneas.

Para mostrar las primeras 10 líneas de martinfierroCap1.txt:

[pastacode lang=»bash» manual=»head%20martinfierroCap1.txt» message=»» highlight=»» provider=»manual»/]

Para mostrar las últimas 15 líneas del mismo archivo:

[pastacode lang=»bash» manual=»tail%20-n%2015%20martinfierroCap1.txt» message=»» highlight=»» provider=»manual»/]

Alternativamente, podemos utilizar la opción -f de tail para observar en tiempo real cuando se registren nuevos eventos en un log. Por ejemplo,

[pastacode lang=»bash» manual=»tail%20-f%20%2Fvar%2Flog%2Fhttpd%2Faccess_log» message=»» highlight=»» provider=»manual»/]

nos permitirá ver los accesos a nuestro servidor web Apache a medida que ocurran.

Mostrar campos separados por un delimitador

Muchas veces nos podemos encontrar con la necesidad de mostrar sólo algunos campos de un archivo de texto en el que cada línea se encuentra dividida en dos o más campos separados por un delimitador. Por ejemplo, el primer y el séptimo campo de /etc/passwd muestran el nombre de los usuarios y su shell asignada, de haber una. El comando cut nos permite mostrar esta información con facilidad.

Pongamos lo aprendido en los posts sobre sed y mostremos la línea donde se encuentra el usuario gacanepa en /etc/passwd:

[pastacode lang=»bash» manual=»sed%20-n%20’%2Fgacanepa%2Fp’%20%2Fetc%2Fpasswd» message=»» highlight=»» provider=»manual»/]

Ahora enviemos el resultado del comando anterior a cut, al cual le indicaremos que muestre los campos n° 1 y 7 (mediante la opción -f) teniendo en cuenta a los dos puntos (:) como delimitador (-d):

[pastacode lang=»bash» manual=»sed%20-n%20’%2Fgacanepa%2Fp’%20%2Fetc%2Fpasswd%20%7C%20cut%20-d’%3A’%20-f1%2C7″ message=»» highlight=»» provider=»manual»/]

El resultado debería ser el siguiente:

gacanepa:/bin/bash

Otras situaciones en las que el uso de cut puede resultarnos útil es al extraer una cierta cantidad de caracteres (mediante la opción -c) de cada línea. Podemos especificar un rango definido, una posición de comienzo e indicar que se extraiga hasta el final, o una posición final y pedir que se muestre desde el principio hasta la misma. Veamos algunos ejemplos usando el archivo martinfierroCap1.txt.

Para extraer los primeros 4 caracteres de cada línea:

[pastacode lang=»bash» manual=»cut%20-c1-4%20martinfierroCap1.txt» message=»» highlight=»» provider=»manual»/]

Para mostrar desde el caracter en la posición 10 hasta el final de cada línea:

[pastacode lang=»bash» manual=»cut%20-c10-%20martinfierroCap1.txt» message=»» highlight=»» provider=»manual»/]

Y para ver desde el principio de cada línea hasta la posición 7:

[pastacode lang=»bash» manual=»cut%20-c-7%20martinfierroCap1.txt» message=»» highlight=»» provider=»manual»/]

Espero que les sirva. ¡Hasta la próxima!

Deja una respuesta