Сценарий оболочки для объединения двух файлов

Я хочу написать shell script который получит два файла A и B и получить результат следующим образом:

Файл A :

 user_a tel_a addr_a user_b tel_b addr_b 

Файл B :

 process_1 user_a process_2 user_a process_3 user_b 

И результат:

 user_a process_1 tel_a addr_a user_a process_2 tel_a addr_a user_b process_3 tel_b addr_b 

Как я могу это сделать? awk или что-то еще?

2 Solutions collect form web for “Сценарий оболочки для объединения двух файлов”

join

 join -1 2 -2 1 FileB FileA 

Вывод

 user_a process_1 tel_a addr_a user_a process_2 tel_a addr_a user_b process_3 tel_b addr_b 

Входные файлы нужно сортировать по ключевому полю … Ваши файлы примеров уже отсортированы, поэтому не было необходимости, но в противном случае вы могли бы включить сортировку следующим образом.

 join -1 2 -2 1 <(sort -k2 FileB) <(sort FileA) 

Поскольку join и paste недоступны повсюду (например, они не работают в моей системе на базе BusyBox), вот как это сделать с awk, как просили:

 awk 'BEGIN { while( (getline < "fileA") > 0) A[$1]=$2 OFS $3 # read fileA into the array A close("fileA") } { print $2, $1, A[$2] }' fileB 
  • Объединить 2 файла на основе всех значений первого столбца первого файла
  • Сравните старый файл и новый файл, но игнорируйте строки, которые существуют только в новом файле?
  • Сравнить столбцы из двух CSV и слить на совпадения
  • Объединение 2 файлов с использованием совпадения полей
  • Поиск совпадений между двумя столбцами разных файлов и печать его в другом столбце
  • Как сравнить два файла в зависимости от значения первого столбца?
  • слияние файлов и получение значений столбцов на основе поля id
  • Удаление строк с одним общим полем
  • Сравнение первого столбца в разных файлах
  • как pdfjoin пейзаж и портретные изображения JPEG в один файл PDF?
  • Объединение двух таблиц, включая многократное появление идентификаторов столбцов
  • Я хотел бы присоединиться к двум файлам csv
  • Linux и Unix - лучшая ОС в мире.