¿Cómo leer un archivo a partir de un número específico de líneas dentro del "mientras se lee"?

¿Cómo leer un archivo a partir de un número específico de líneas dentro del "mientras se lee"?

Todo lo que quiero es especificar un cierto número de líneas como esta lineNumberIs=3y decir mientras se lee que comience desde esta tercera línea o cualquier número de línea y buscar líneas después para ejecutar algunos comandos más adelante en las líneas recuperadas. Algo como eso

 while read line from $lineNumberIs
    do
    **some commands not just echo nor printing on the screen** 
    done < $dataFile

Respuesta1

while IFS= read -r line; do
    # ...
done < <(tail -n "+$lineNumberIs" $dataFile)

tail -n +K(con el signo más) le dice a tail que comience en el número de línea especificado (verla página de manual).

El <(...)bit es unsustitución de procesos. Le permite especificar una secuencia de comandos y permitir que bash la lea como si fuera un archivo. Es muy útil cuando desea evitar el efecto del subshell creado en una canalización.

IFS= read -rse utiliza para leer la línea exactamente como aparece en el archivo, sin espacios ni secuencias de escape eliminadas.

Respuesta2

#!/bin/bash
if [ $# -eq 0 ]; then
        echo "Please execute $0 with linestoskip parameter"
        exit 0
fi
linestoskip=$1
Counter=0
dataFile='/etc/fstab'
while read line
do
        if [ $Counter -ge $linestoskip ]; then
                echo $line
        fi
        Counter=`expr $Counter + 1`
done < $dataFile

Este script espera que se omita una cantidad de líneas como parámetro. Puedes hacer lo que quieras en la condición interna.

Respuesta3

Solución muy simple -

tail -n +K filename

donde K = número de línea desde donde desea leer el archivo. Esto comenzará a leer el archivo desde la línea K hasta el final.

información relacionada