Imprimir archivo después de omitir las primeras líneas X en Bash

Abdullah Bukhari 20 junio 2023
  1. Omitir Líneas Usando los Comandos head y tail
  2. Use vim para saltar las primeras n líneas
  3. Utilice sed para saltar las primeras n líneas
Imprimir archivo después de omitir las primeras líneas X en Bash

Suponga que tiene un archivo, uno enorme, y desea mostrar su contenido. ¿Cómo lo harías?

Obviamente, no querrá imprimir todo el contenido del archivo, ya que no sería muy práctico. Le gustaría imprimir algunas líneas selectivas; tal vez usaría expresiones regulares para analizar el archivo y solo imprimiría las coincidencias.

Este artículo explicará varios métodos para hacerlo.

Omitir Líneas Usando los Comandos head y tail

El siguiente ejemplo utiliza los cinco comandos Bash más utilizados para hacerlo:

tail fileName.txt
head fileName.txt
tail -n fileName.txt # here n is an integer
head -n fileName.txt # here n is an integer
tail +n fileName.txt # prints all lines starting from
# the nth file

Lo que hace el comando tail es que imprime las últimas diez líneas de un archivo, mientras que head imprime las primeras diez líneas de un archivo.

Cuando usa el comando tail con la opción –n, imprime las últimas n líneas. Por el contrario, cuando usa el comando head con la opción –n, imprime las primeras n líneas.

Es importante tener en cuenta que aquí n es un número entero, por lo que cuando ejecute los comandos, deberá sustituir n por un número entero.

El quinto método es algo complicado. Ignora las primeras líneas (n – 1) e imprime todas las líneas posteriores.

Use vim para saltar las primeras n líneas

También puede usar el editor Vim para omitir las primeras líneas n. Vim es un editor de texto basado en consola que le permite crear y cambiar cualquier documento de texto de manera muy eficiente.

Para usar Vim por primera vez, debe instalarlo. Use el siguiente comando para hacerlo:

sudo apt install vim

Ahora que Vim está instalado, llegamos a la parte comercial de nuestro propósito, que es usar Vim para omitir las primeras líneas n.

Lo haremos mediante un archivo intermediario. Primero copiaremos el contenido de nuestro antiguo archivo a uno nuevo; luego, borraremos las primeras n líneas del nuevo archivo.

Usaremos la redirección de entrada y salida para copiar el contenido de un archivo a otro. Si has estudiado el curso de sistema operativo, habrás oído hablar de la tabla ppfdt (tabla de descriptores de archivos de procesos).

De forma predeterminada, el primer descriptor apunta a stdin (o teclado), el segundo descriptor apunta a stdout (o monitor) y el tercer descriptor apunta a stderror.

Considere la siguiente secuencia de comandos para una mayor comprensión.

cat 0<old_file.txt 1>new_file.txt # copies old file’s contents to new file

El comando anterior lee el contenido del archivo antiguo y lo copia en el archivo nuevo. Observe cómo usamos el descriptor 0 para leer y el descriptor 1 para escribir.

Si encuentra este descriptor confuso, tenemos algo diferente para usted. Los siguientes comandos también funcionarán:

cat <old_file.txt >new_file.txt # copies old file’s contents to new file
cp <old_file.txt >new_file.txt # copies old file’s contents to new file

Tenga en cuenta que en el segundo método anterior, hemos utilizado el comando copiar (es decir, cp). Toma dos argumentos: la ruta al archivo de origen y la ruta al archivo de destino.

Ahora que hemos terminado de copiar el archivo. Abra el nuevo archivo en Vim y use el siguiente comando:

vim new_file.txt

Ahora use Shift+Esc y escriba el siguiente comando en Vim:

:1,nd # here n is an integer number e.g., 2

El comando anterior elimina las primeras n líneas en el nuevo_archivo.txt. Aquí, d significa eliminar.

Utilice sed para saltar las primeras n líneas

Crear un nuevo archivo y luego eliminar su contenido puede ser una molestia. Además, también consumirá mucha memoria adicional si el archivo antiguo es enorme.

Entonces, veamos un método más fácil para lograr lo mismo:

sed 1,nd old_file.txt # here n is an integer

Es importante tener en cuenta que el comando sed no modificará el archivo antiguo. Más bien, simplemente mostrará el contenido del archivo antiguo después de eliminar las primeras n líneas.