次のファイルがあります。
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行を印刷します(ピリオドがないことを確認せず)。次に、ピリオドのない別の行に会うまで、次の行をスキップします。
可能であれば、このデータを提供するツールを変更してより合理的な形式で提供することをお勧めします。