
Todo lo que quiero es especificar un cierto número de líneas como esta lineNumberIs=3
y 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 -r
se 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.