
Tudo o que eu quero é especificar um certo número de linhas como esta lineNumberIs=3
e 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.