3D 座標のリストを含む 1 つの長いテキスト ファイルがあります。ファイルの先頭は、次のようなヘッダーで構成されています。
10112
2455
121.417670 172.321300 1.704072
0.997697 0.067831 -0.000222
-0.067831 0.997697 0.000207
0.000236 -0.000191 1.000000
0.997697 0.067831 -0.000222 0
-0.067831 0.997697 0.000207 0
0.000236 -0.000191 1.000000 0
121.417670 172.321300 1.704072 1
その後、座標のリストを開始します。すべての行は 3 ~ 7 個の数字で構成されています。例えば:
0.001686 0.812066 -1.686245 0.074434
0.001695 0.816359 -1.692300 0.087190
0.001699 0.818673 -1.694508 0.097398
...
リストの全長は、ヘッダーの最初の 2 つの数値の積 (10112*2455) に等しくなります。これらは PTX ファイルで、レーザー スキャンからの 3D ポイントがテキスト形式で含まれています。
ポイントは、ファイルがヘッダーと座標の連結であり、ファイルを分割してヘッダーで分割したいということです。理想的な解決策は、ファイルを 2 つの連続する単一整数行に分割することです。csplit などを使用して一般的なソリューションを探していましたが、csplit は一度に 1 行ずつ読み取るため、連続する 2 行を検出できません。
最後の手段として、自分でソフトウェアを作成しますが、可能な場合は CLI ツール (Awk?) に基づくソリューションを見つけることを好みます。
アイデアはありますか?
ありがとうございました
編集:例
次の内容のファイルがあるとします。
2
3
121.417670 172.321300 1.704072
0.997697 0.067831 -0.000222
-0.067831 0.997697 0.000207
0.000236 -0.000191 1.000000
0.997697 0.067831 -0.000222 0
-0.067831 0.997697 0.000207 0
0.000236 -0.000191 1.000000 0
121.417670 172.321300 1.704072 1
6.001686 0.812066 -1.686245 0.074434
3.001695 0.816359 -1.692300 0.087190
6.001699 0.818673 -1.694508 0.097398
2.001686 0.812066 -1.686245 0.074434
1.001695 0.816359 -1.692300 0.087190
0.001699 0.818673 -1.694508 0.097398
3 <--- cut before this line
1
421.417670 172.321300 1.704072
0.997697 0.067831 -0.000222
-0.067831 0.997697 0.000207
0.000236 -0.000191 1.000000
0.997697 0.067831 -0.000222 0
-0.067831 0.997697 0.000207 0
0.000236 -0.000191 1.000000 0
421.417670 172.321300 1.704072 1
1.001686 0.812066 -1.686245 0.074434
2.001695 0.816359 -1.692300 0.087190
3.001699 0.818673 -1.694508 0.097398
この場合、1 つの整数で構成される 2 つの行の最初の行の直前で、2 つのファイルが作成されます。
別の方法として、セクションを構成するポイントの数が 2 つの単数行で示されていることを知っていれば、最初の出力ファイルは最初の 2*3+10=16 (ヘッダーの 10 行とデータの 6 行) 行で構成されていると言えます。 、および 2 番目のファイルは、後続の 3*1+10=13 (常にヘッダーの 10 行、今回はデータの 3 行) 行で構成されます。