我知道如何通过使用awk和sed得到一系列的线。我也知道如何使用awk和sed打印出每第n行。
但是,我不知道如何将两者结合起来。
例如,我有一个有178万行的文件。
对于每17800行,我想打印第17800行加上之后的两行。
所以如果我有一个1780000行的文件,它从1开始,到1780000结束,这将打印出来:
1
2
3
17800
17801
17802
35600
35601
35602
# ... and so on.
字符串
有谁知道如何使用awk、sed或其他unix命令每隔第n个间隔获取一个行的范围吗?
4条答案
按热度按时间owfi6suc1#
使用GNU sed:
字符串
也就是说
型
我们还可以添加前三行:
型
使用Awk,这会更简单:
型
7hiiyaii2#
字符串
eoigrqb63#
字符串
产出:
型
说明
NR < 4
用于前3行,因为需求For every 17800th line, print 17800th line plus the two after that.
不适合您给出的输出。1.这里我使用
head
来减小输出大小,您应该在用例中删除它。1.对于GNU seq,你不需要
-f %.0f
。cnh2zyt34#
awk
解决方案,跳过 *ALL * 除法/模/逐行计数器操作,并且每N行仅更新一次跟踪器的值: