删除特定步骤中的三行

Mar*_*cus 2 sed awk text-processing

我有这样的数据(这只是一小部分):

  454SOL     OW20704   0.317   0.251   5.525
  454SOL    HW120705   0.388   0.322   5.531
  454SOL    HW220706   0.229   0.290   5.553
  462SOL     OW20728   0.130   1.821   5.295
  462SOL    HW120729   0.120   1.806   5.394
  462SOL    HW220730   0.044   1.857   5.259
  469SOL     OW20749   0.461   1.266   5.451
  469SOL    HW120750   0.411   1.267   5.365
  469SOL    HW220751   0.398   1.248   5.527
  500SOL     OW20842   1.754   1.223   5.312
  500SOL    HW120843   1.845   1.184   5.299
  500SOL    HW220844   1.762   1.319   5.336
  502SOL     OW20848   1.592   1.629   5.349
  502SOL    HW120849   1.619   1.663   5.259
  502SOL    HW220850   1.671   1.591   5.395
  515SOL     OW20887   1.587   0.779   5.394
  515SOL    HW120888   1.495   0.817   5.389
  515SOL    HW220889   1.647   0.826   5.329
  516SOL     OW20890   1.013   0.105   5.494
  516SOL    HW120891   1.019   0.190   5.442
  516SOL    HW220892   1.045   0.029   5.437
  522SOL     OW20908   1.728   0.935   5.578
  522SOL    HW120909   1.682   0.928   5.489
  522SOL    HW220910   1.666   0.979   5.644
Run Code Online (Sandbox Code Playgroud)

我想删除3行,接下来的9行不管,然后再次删除3行。在本例中,我想删除第 10、11、12 和 22、23、24 行。预期产出

  454SOL     OW20704   0.317   0.251   5.525
  454SOL    HW120705   0.388   0.322   5.531
  454SOL    HW220706   0.229   0.290   5.553
  462SOL     OW20728   0.130   1.821   5.295
  462SOL    HW120729   0.120   1.806   5.394
  462SOL    HW220730   0.044   1.857   5.259
  469SOL     OW20749   0.461   1.266   5.451
  469SOL    HW120750   0.411   1.267   5.365
  469SOL    HW220751   0.398   1.248   5.527
  502SOL     OW20848   1.592   1.629   5.349
  502SOL    HW120849   1.619   1.663   5.259
  502SOL    HW220850   1.671   1.591   5.395
  515SOL     OW20887   1.587   0.779   5.394
  515SOL    HW120888   1.495   0.817   5.389
  515SOL    HW220889   1.647   0.826   5.329
  516SOL     OW20890   1.013   0.105   5.494
  516SOL    HW120891   1.019   0.190   5.442
  516SOL    HW220892   1.045   0.029   5.437
Run Code Online (Sandbox Code Playgroud)

我试过这个:

#!/bin/bash 
awk 'NR%10==0 || NR%11==0 || NR%12==0' sol.txt | tee sol_after.txt 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我需要删除整个文件上的行,因此删除 10-12,然​​后删除 22-24,然后删除 34-36、46-48 等

Ed *_*ton 5

在每个 Unix 机器上的任何 shell 中使用任何 awk:

$ seq 30 | awk 'NR%12 !~ /^(10|11|0)$/'
1
2
3
4
5
6
7
8
9
13
14
15
16
17
18
19
20
21
25
26
27
28
29
30
Run Code Online (Sandbox Code Playgroud)

或者如果您愿意:

$ seq 30 | awk 'NR%12 == 10{c=3} !(c&&c--)'
1
2
3
4
5
6
7
8
9
13
14
15
16
17
18
19
20
21
25
26
27
28
29
30
Run Code Online (Sandbox Code Playgroud)

请参阅/sf/answers/1253987381/了解具体c&&c--内容和更多信息。