文字列マッチングを使用して2つのファイル間でテキスト行をコピーする

文字列マッチングを使用して2つのファイル間でテキスト行をコピーする

助けを求めて、2つのファイルがあります。 1つはさまざまな名前を含む大きなリスト、もう1つは座標です。両方のファイルの各行は8ビットコードで始まります。 File1で8ビットラインコードを見つけ、File2の一致するすべてのラインコードにラインコンテンツをコピーしたいと思います。

(ファイル1)ハッシュ/名前は一度だけ表示されます。

136667ED ap1_01_a_ap1_01_rails_07
035B337C ap1_01_a_arrows_005
79546F82 ap1_01_a_centreline_010
0E1D31E7 prop_bush_med_02

(ファイル2)一部は0E1D31E7など、異なる座標を持つ複数のハッシュコピーを持っています。

136667ED -1294.6945,-2376.0317,21.8279
035B337C -1314.6719,-2721.7378,12.9467
79546F82 -1283.1066,-2529.9771,12.9635
0E1D31E7 1919.4160,-1814.3889,160.5210
0E1D31E7 1919.9885,-2628.2529,0.7537  
0E1D31E7 192.0235,-2603.1790,4.9978   
0E1D31E7 192.1050,4950.3540,389.4736

8ビットコード/名前を一致するファイル2のコード行にコピーする方法は次のとおりです。

136667ED -1294.6945,-2376.0317,21.8279  136667ED ap1_01_a_ap1_01_rails_07  
035B337C -1314.6719,-2721.7378,12.9467  035B337C ap1_01_a_arrows_005       
79546F82 -1283.1066,-2529.9771,12.9635  79546F82 ap1_01_a_centreline_010   
0E1D31E7 1919.4160,-1814.3889,160.5210  0E1D31E7 prop_bush_med_02          
0E1D31E7 1919.9885,-2628.2529,0.7537    0E1D31E7 prop_bush_med_02          
0E1D31E7 192.0235,-2603.1790,4.9978     0E1D31E7 prop_bush_med_02          
0E1D31E7 192.1050,4950.3540,389.4736    0E1D31E7 prop_bush_med_02          

繰り返し始まるテキスト行のリンク

うまくいくかもしれませんが、これらのコマンドを実行する方法がわかりません。私は窓を使っています。

答え1

入力に基づいてpaste標準出力コマンドを使用した出力は次のとおりです。

$ paste File1 File2
136667ED ap1_01_a_ap1_01_rails_07   136667ED -1294.6945,-2376.0317,21.8279
035B337C ap1_01_a_arrows_005    035B337C -1314.6719,-2721.7378,12.9467
79546F82 ap1_01_a_centreline_010    79546F82 -1283.1066,-2529.9771,12.9635

大容量ファイルがあるのでpaste File1 File2 > mergedfile

答え2

joinプロセス置換を理解するシェルを使用してください。

$ join <(sort file2) <(sort file1)
035B337C -1314.6719,-2721.7378,12.9467 ap1_01_a_arrows_005
0E1D31E7 1919.4160,-1814.3889,160.5210 prop_bush_med_02
0E1D31E7 1919.9885,-2628.2529,0.7537 prop_bush_med_02
0E1D31E7 192.0235,-2603.1790,4.9978 prop_bush_med_02
0E1D31E7 192.1050,4950.3540,389.4736 prop_bush_med_02
136667ED -1294.6945,-2376.0317,21.8279 ap1_01_a_ap1_01_rails_07
79546F82 -1283.1066,-2529.9771,12.9635 ap1_01_a_centreline_010

または、出力の途中で結合フィールドをコピーします。

$ join -o0,1.2,0,2.2 <(sort file2) <(sort file1)
035B337C -1314.6719,-2721.7378,12.9467 035B337C ap1_01_a_arrows_005
0E1D31E7 1919.4160,-1814.3889,160.5210 0E1D31E7 prop_bush_med_02
0E1D31E7 1919.9885,-2628.2529,0.7537 0E1D31E7 prop_bush_med_02
0E1D31E7 192.0235,-2603.1790,4.9978 0E1D31E7 prop_bush_med_02
0E1D31E7 192.1050,4950.3540,389.4736 0E1D31E7 prop_bush_med_02
136667ED -1294.6945,-2376.0317,21.8279 136667ED ap1_01_a_ap1_01_rails_07
79546F82 -1283.1066,-2529.9771,12.9635 79546F82 ap1_01_a_centreline_010

より良い熱の場合:

$ join -o0,1.2,0,2.2 <(sort file2) <(sort file1) | column -t
035B337C  -1314.6719,-2721.7378,12.9467  035B337C  ap1_01_a_arrows_005
0E1D31E7  1919.4160,-1814.3889,160.5210  0E1D31E7  prop_bush_med_02
0E1D31E7  1919.9885,-2628.2529,0.7537    0E1D31E7  prop_bush_med_02
0E1D31E7  192.0235,-2603.1790,4.9978     0E1D31E7  prop_bush_med_02
0E1D31E7  192.1050,4950.3540,389.4736    0E1D31E7  prop_bush_med_02
136667ED  -1294.6945,-2376.0317,21.8279  136667ED  ap1_01_a_ap1_01_rails_07
79546F82  -1283.1066,-2529.9771,12.9635  79546F82  ap1_01_a_centreline_010

関連情報