使用 awk 每隔 N 行记录特定的列值

using awk to record certain column value every Nth row

我有一个包含 6 列的数十万行数据的文件。

具有数据的第一行从第 304 行开始。我正在寻找一个 'awk' 命令,它可以在每增加 243 行后为我提供第 2 列的值。因此,第一个值将是“第 304 行第 2 列”,第二个值将是“第 547 行第 2 列”,依此类推...

谢谢

使用 GNU awk,你可以做到这一点

awk 'NR==304 || NR==x{print ;x=NR+243}' input

输入:

$ paste <(seq 10000) <(seq 10000) > input

输出:

304
547
790
1033
1276
1519
1762
2005
2248
2491
2734
2977
3220
3463
3706
3949
4192
4435
4678
4921

读取的每一行都被分成字段:</code>是第 2 列</p> <p><code>NR是正在读取的行的当前行号。

试一试:

awk 'NR>=304 && !((NR-304)%243) { print ;}' file.txt

使用模运算符:

awk '! (FNR < 304 || (FNR-304) % 243) {print }' file

或者计数器变量:

awk '++c == 304 {print ; c -= 243}' file