我知道如何通过使用awk和sed获得一系列的行。
我也知道如何使用awk和sed打印第n行。

但是,我不知道如何将两者结合起来。

例如,我有一个1780000行的文件。

对于每17800行,我想打印17800行以及其后的两行。

因此,如果我有一个包含1780000行的文件,并且该文件从1开始到1780000结尾,则将打印:

1
2
3
17800
17801
17802
35600
35601
35602
# ... and so on.

有谁知道如何使用awk,sed或其他unix命令每n个间隔获取一行行距?

最佳答案

使用GNU sed:

sed -n '0~17800{N;N;p}' input

意义,
For every 17800th line: 0~17800
  Read two lines: {N;N;
  And print these out: p}

我们还可以添加前三行:
sed -n -e '1,3p' -e '0~17800{N;N;p}' input

使用Awk,这会更简单:
awk 'NR%17800<3 || NR==3 {print}' input

关于unix - 我如何使用awk,sed或其他unix命令每n个间隔获得一行线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16137773/

10-10 08:25