Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从每个数据块中删除特定行?_Bash_Awk_Sed - Fatal编程技术网

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”吗?