Bash 如何从每个数据块中删除特定行?
我有一个重复的数据集,看起来像Bash 如何从每个数据块中删除特定行?,bash,awk,sed,Bash,Awk,Sed,我有一个重复的数据集,看起来像 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
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删除具有特定模式的行,但是我找不到如何删除每个数据块中的多行 试试这个:
awk '(NR % 702) < 3; (NR % 702) > 100' file > new_file
awk'(NR%702)<3;(编号%702)>100'文件>新文件
NR
:总输入流中的当前记录编号(行号)
%
:模运算尝试以下操作:
awk '(NR % 702) < 3; (NR % 702) > 100' file > new_file
awk'(NR%702)<3;(编号%702)>100'文件>新文件
NR
:总输入流中的当前记录编号(行号)
%
:模运算这可能适合您(GNU-sed):
打印需要的行,删除不需要的行。这可能适合您(GNU-sed):
打印需要的行,删除不需要的行。第701行和第702行如何?您想保留“700”和“block1”吗?701st和702线路如何?您想保留“700”和“block1”吗?