Bash 从 Z 行开始从文件中读取 N 行

Bash read N lines from file starting from line Z

我有文本文件:

34
3467uy
56ytyyu
And so on

我想从此文件中读取从 Z 行开始的 N 行。我知道如何使用 (head -n N) 或尾部读取前 N 行。我现在知道如何使用 tail 从 Z 行读取到文件末尾。但我找不到如何从特定行开始读取特定数量。 求助!

管道 tail 的输出到 head:

tail -n +Z file | head -n N

例如:

$ seq 100 | tail -n +15 | head -n 5
15
16
17
18
19

这可以使用 sed 来完成。例如,要发出文件中的第 10 行到第 20 行:

sed -n '10,+10p' a_file

使用 awk :下面的示例将从第 3 行打印到第 5 行(3+2 行)。设置 start_linebuffer 变量以打印从 start_line 再加上 buffer 行。

awk -vstart_line=3 -vbuffer=2 'NR>=start_line && NR<=start_line+buffer' file

使用 GNU sed:

seq 1 10 | sed '2,+3!d'

输出:

2
3
4
5

来自man sed

addr1,+N: Will match addr1 and the N lines following addr1.