Como ler o arquivo a partir de um número específico de linha dentro do “while read”?

3

Tudo o que eu quero é especificar um certo número de linha como este lineNumberIs=3 e dizer enquanto lido para começar a partir desta terceira linha ou qualquer número de linha e buscar linhas após as divisões para executar alguns comandos mais tarde linhas Algo assim

 while read line from $lineNumberIs
    do
    **some commands not just echo nor printing on the screen** 
    done < $dataFile
    
por Ahmed Zain El Dein 01.05.2013 / 19:11

3 respostas

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

tail -n +K (com o sinal de mais) diz à cauda para iniciar no número de linha especificado (veja a página do manual ).

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

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

    
por glenn jackman 01.05.2013 / 21:32
3
#!/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 o número de linhas pule como um parâmetro. Você pode fazer o que quiser na condição interna if.

    
por thefourtheye 01.05.2013 / 19:36
-1

Solução muito simples -

tail -n +K filename

onde K = número da linha de onde você deseja ler o arquivo. Isso iniciará a leitura do arquivo da linha K até o final.

    
por hari 26.07.2017 / 15:15