ファイル内の最初のN行の後、整数の前の行を削除します。

ファイル内の最初のN行の後、整数の前の行を削除します。

次のファイルがあります。

    1         2         3         4         5
 0.05775  0.00238  0.02514   0.00469  0.01882
 0.26868  0.04114  0.09359  0.02155  0.01367
 0.11413  0.00907  0.04032  0.02487   0.01156
 0.03759  0.00624  0.00819  0.01527   0.01128
 0.09910  0.03416  0.02280  0.00627   0.00433
    6         7         8         9        10
0.01798   0.00035   0.00672  0.02180  0.00184
0.01880  0.00834   0.04975  0.05503   0.00234
0.00242  0.00618   0.04936  0.02320   0.00269
 0.00931  0.00611   0.02371  0.00299   0.00353
 0.00763  0.00197  0.00673  0.00338   0.00182
   11        12        13        14        15
 0.00330   0.00521   0.00495   0.00426   0.00403
0.01121   0.02891   0.02162   0.02235   0.01534
0.01081   0.01871   0.00888   0.01835   0.00867
0.00684   0.00965   0.00645   0.00802   0.00317
0.00671   0.00333   0.00376  0.00204   0.00028

この例には、3 つの主要な情報が含まれています。各ブロックの最初の行には常に整数が含まれ、他の行には小数が含まれます。各ブロックの最初の4行を取得したいと思います。

出力:

    1         2         3         4         5
 0.05775  0.00238  0.02514   0.00469  0.01882
 0.26868  0.04114  0.09359  0.02155  0.01367
 0.11413  0.00907  0.04032  0.02487   0.01156
    6         7         8         9        10
0.01798   0.00035   0.00672  0.02180  0.00184
0.01880  0.00834   0.04975  0.05503   0.00234
0.00242  0.00618   0.04936  0.02320   0.00269
   11        12        13        14        15
 0.00330   0.00521   0.00495   0.00426   0.00403
0.01121   0.02891   0.02162   0.02235   0.01534
0.01081   0.01871   0.00888   0.01835   0.00867

sedで何かをしようとしましたが、成功しませんでした。

ベストアンサー1

私は尋ねた:

すべてのブロックにヘッダー行があり、正確に5つの要素データ?それとも一部の行に可変量がありますか?

もしそうなら正確にブロックあたり6行を使用すると、次のことができます。

sed -n 'N;N;N;p;N;N' file.txt

ただし、そうでない場合は、以下を使用してください。

sed -n '/\./!{N;N;N;p;}' file.txt

後者のコマンドは、ピリオドのない行に会うと、その行と次の3行を印刷します(ピリオドがないことを確認せず)。次に、ピリオドのない別の行に会うまで、次の行をスキップします。


可能であれば、このデータを提供するツールを変更してより合理的な形式で提供することをお勧めします。

おすすめ記事