我有重复的数据集,看起来像
700
block1
1 A A A
2 B B B
C 3 4 5
D 6 8 10
....
FF DD 22 11
700
block2
1 B B B
C D F Q
....
该文件由100个数据块组成,每个数据块有702行。每个数据块的第一行是数据的数量(= 700),每个数据块的第二行是数据块的数量。
这里,我希望从每个数据块中删除第3~100行(这将删除98行),在每个数据块中只留下第101~第700行。在sed或grep中有没有办法做到这一点?我需要使用for循环吗?
我知道如何使用grep -v和sed删除具有特定模式的行,但是我找不到如何删除每个数据块中的多行。
答案 0 :(得分:2)
试试这个:
awk '(NR % 702) < 3; (NR % 702) > 100' file > new_file
NR
:总输入流中的当前记录号(行号)
%
:模运算
答案 1 :(得分:2)
这可能适合你(GNU sed):
sed '/^700$/,+1p;//,+99d' file
打印所需的行并删除不需要的行。