如何从长文件中重复打印选定的行数?

如何从长文件中重复打印选定的行数?

我希望能够通过跳过第 5,6,8,9 行来打印第 1,2,3,4,7 行,并重复该模式直到文件末尾。

输入示例:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
Line 11
Line 12
Line 13
Line 14
Line 15
Line 16
Line 17
Line 18

期望的输出:

Line 1
Line 2
Line 3
Line 4
Line 7
Line 10
Line 11
Line 12
Line 13
Line 16

使用 Solaris 10、KSH。想要一个 nawk 或 sed 解决方案

答案1

如果我理解正确的话,您正在寻找一种每九行重复一次的模式。尝试:

$ awk '{r=NR % 9} r>0 && (r<=4 || r==7)' input
Line 1
Line 2
Line 3
Line 4
Line 7
Line 10
Line 11
Line 12
Line 13
Line 16

怎么运行的

首先,我们使用r=NR % 9设置r为以 9 为模的行号。接下来,我们选择要保留这九行中的哪一行:r>0 && (r<=4 || r==7)

相关内容