从bash脚本中的行号开始读取行

Gil*_*Gil 10 linux bash grep sed

我正在尝试从bash中的特定行开始逐行读取文件.我已经使用while命令通过递增计数来读取文件的每一行.我可以从特定的线开始吗?

let count=0
declare -a ARRAY

while read LINE; do
ARRAY[$count]=$LINE 
vech=${ARRAY[$count]}
    if [...blah ..]
     then
    ...blah..
    fi 
sleep 2 
((count++)) 
done < filec.c 
Run Code Online (Sandbox Code Playgroud)

欢迎以建议或算法的形式提供任何形式的帮助.

编辑:我正在尝试将行号作为变量传递.我正在Grepping一个特定的模式,如果找到,应该从模式开始传递行号.

Tim*_*ote 15

我会使用sed地址从特定的行号开始并打印到文件的末尾:

lineNumber=10
sed -n "$lineNumber"',$p' |
while read line; do
  # do stuff
done
Run Code Online (Sandbox Code Playgroud)

或者,正如Fredrik所建议的那样,使用awk:

lineNumber=10
awk "NR > $lineNumber" |
while read line; do
  # do stuff
done
Run Code Online (Sandbox Code Playgroud)


Sim*_*-Cu 6

这样的事情怎么样?

while read -r line
do
    echo "$line"
done < <(tail -n +number file.name)
Run Code Online (Sandbox Code Playgroud)

它不是POSIX兼容的,但试试你的Bash.当然,在循环中用$ line做你想要的东西.
PS:使用您想要的数字行更改数字,使用文件名更改file.name.