Como ler o arquivo a partir de um número específico de linhas dentro do "durante a leitura"?

Como ler o arquivo a partir de um número específico de linhas dentro do "durante a leitura"?

Tudo o que eu quero é especificar um certo número de linhas como esta lineNumberIs=3e dizer durante a leitura para iniciar esta terceira linha ou qualquer número de linha e buscar linhas após wards para executar alguns comandos posteriormente nas linhas buscadas Algo parecido

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

Responder1

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

tail -n +K(com o sinal de mais) diz ao tail para começar no número de linha especificado (vejaa página de manual).

O <(...)bit é umsubstituição de processo. Ele permite que você especifique uma sequência de comandos e deixe o bash lê-la como um arquivo. É muito útil quando você deseja evitar o efeito do subshell criado em um pipeline.

IFS= read -ré usado para ler a linha exatamente como ela aparece no arquivo, sem espaços ou sequências de escape removidas.

Responder2

#!/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 o número de linhas a serem ignoradas como parâmetro. Você pode fazer o que quiser na condição if interna.

Responder3

Solução muito simples -

tail -n +K filename

onde K = número da linha de onde você deseja ler o arquivo. Isso começará a ler o arquivo da linha K até o final.

informação relacionada