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

Я хочу написать 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 или что-то еще?

  • Присоединиться: два файла - но только добавить последние два столбца
  • Объединение нескольких файлов с присоединением
  • используя команду awk, чтобы сравнить два файла и распечатать все столбцы, а затем отобразить как NA
  • Присоединить два несортированных файла к POSIX?
  • Соответствие двух файлов для аналогичной первой строки
  • Объединение строк с одинаковым полем
  • Заменить значения на основе соответствия переменной ID
  • Присоедините два файла на основе столбца
  • 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 
    Linux и Unix - лучшая ОС в мире.