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

Я хочу написать 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 
  • Объединение двух таблиц, включая многократное появление идентификаторов столбцов
  • Объединение двух файлов данных на основе сравнения столбцов
  • Вставить несколько файлов на основе первого столбца в один файл
  • сравнить несколько файлов (более двух) с двумя разными столбцами
  • Элегантный способ подсчета, сколько раз шаблоны из файла встречаются в другом файле
  • Я хотел бы присоединиться к двум файлам csv
  • Найти общие элементы в данном столбце из двух файлов и вывести значения столбцов из каждого файла
  • Объединить столбцы с помощью awk? (Или другие предложения)
  • объединить файлы csv, сохранить запятую внутри кавычек
  • Объединение строк с одинаковым полем
  • Объединение двух CSV по сравнению только с определенным столбцом
  • Interesting Posts

    Где начинается snmpwalk, если не указано OID?

    Как установить языковой стандарт cs_CZ.ISO8859-2 на Ubuntu 12.04

    Как работает агент GPG?

    Как использовать PPMD ​​с 7z под Linux?

    Не удается подключить к автозапуску контейнеры LXC в (Fedora) SELinux

    Установка переменной со значением по умолчанию ведет себя по-другому, если перед командой?

    Зачем вам PulseAudio?

    Как Ubuntu сохраняет постоянные разрешения доступа для точек монтирования автоматически установленных пользователем устройств?

    Как запустить chrome из окна терминала после deb isntallation?

    Ошибка инициализации сервера: учетная запись администратора OC4J не настроена

    Возможно ли в taskwarrior для напоминаний о повторяющихся задачах истечь автоматически?

    Вопрос о wget -qO-

    Выполнение арифметики с плавающей запятой в определениях переменных сценария оболочки

    только корневая файловая система

    Systemd: служба не перезапускается с параметром WatchdogSec

    Linux и Unix - лучшая ОС в мире.