如何在BASH中读取文件中的特定行?

3

while read -r line会遍历文件中的每一行。我该如何让它遍历文件中特定的行,例如第1-20行,然后是第30-100行?

2个回答

5

有一种方法是使用 sed 来获取所需的行:

while read -r line; do
  echo "$line"
done < <(sed -n '1,20p; 30,100p' inputfile)

说这样做会将输入文件中的1-20行和30-100行传递给read函数。

3

@devnull的sed命令可以完成任务。另一个选择是使用awk,因为它避免了读取操作,你可以在awk本身中进行处理:

awk '(NR>=1 && NR<=20) || (NR>=30 && NR<=100) {print "processing $0"}' file

awk的语法如何打印特定行(例如:第43行和第51行)或提供某种列表的行(例如:行号从[3,77,93,22])? - drevicko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接