Это так же просто, как создание следующего go.awk
:
NR==FNR { lookup[substr($0,1,7)] = $0 }
NR!=FNR { print $0" "lookup[$0] }
Затем вы запускаете его с помощью:
awk -f go.awk file1.txt file2.txt
Первая команда выполняется для каждой строки в first входной файл, и он просто сохраняет всю строку в ассоциативном массиве, набранном на первых семи символах, для последующего поиска.
Вторая команда для каждого файла во втором и последующих входных файлах, выводит строку и соответствующую запись в ассоциативный массив.Вывод, который вы видите, является именно тем, о чем вы просили:
19V17R1 19V17R1-wipedrive-2016.05.23-07.25PM-d0.pdf
1BC6062 1BC6062-wipedrive-2018.07.26-08.34AM-d0.pdf
Теперь я предпочитаю , используя сценарии, поскольку это означает, что мне не нужно искать в своей истории произвольно сложные awk
команды, но, если вы хотите, чтобы однострочник делал то же самое:
awk 'NR==FNR{lookup[substr($0,1,7)]=$0}NR!=FNR{print $0" "lookup[$0]}' file1.txt file2.txt