while read -r line
会遍历文件中的每一行。我该如何让它遍历文件中特定的行,例如第1-20行,然后是第30-100行?
有一种方法是使用 sed
来获取所需的行:
while read -r line; do
echo "$line"
done < <(sed -n '1,20p; 30,100p' inputfile)
@devnull的sed命令可以完成任务。另一个选择是使用awk,因为它避免了读取操作,你可以在awk本身中进行处理:
awk '(NR>=1 && NR<=20) || (NR>=30 && NR<=100) {print "processing $0"}' file