Ищу помощи, у меня есть два файла, один - большой список различных имен, другой - координаты. оба файла начинают каждую строку с 8-значного кода. с 8-значного кода. Я хочу найти 8-значный код строки из File1 и скопировать содержимое строки во все совпадающие коды строк в 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
Объединить строки текста с повторяющимся началом
Это может сработать, но я не знаю, как запустить любую из этих команд. Я использую windows.
Использование 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