Присоедините два файла на основе столбца

file1:

a, 1 b, 5 c, 2 f, 7 

file2:

 a, 2 f, 9 g, 3 

Я хочу присоединиться к файлу 1 и файлу 2 на основе столбца 1 и получить файл 3, как показано ниже.

file3:

 a, 1, 2 b, 5, - c, 2, - f, 7, 9 g, -, 3 

объединить соответствующие значения, а также сохранить определенные из каждого файла

One Solution collect form web for “Присоедините два файла на основе столбца”

Использование join :

 $ join -t, -a 1 -a 2 -o0,1.2,2.2 -e ' -' file1 file2 a, 1, 2 b, 5, - c, 2, - f, 7, 9 g, -, 3 

Стандартная join будет выполнять реляционную операцию JOIN в двух отсортированных входных файлах.

Используемые здесь флаги говорят утилите ожидать ввод с разделителями-запятыми ( -t, ) и производить вывод для всех записей в обоих файлах ( -a 1 -a 2 , иначе он будет выдавать только выходные данные для строк с соответствующим первым полем). Затем мы запрашиваем поле объединения вместе со вторым столбцом обоих файлов для -o0,1.2,2.2 ( -o0,1.2,2.2 ) и говорим, что любое отсутствующее поле должно быть заменено строкой ␣- (пробел, с -e ' -' ).

Если вход не отсортирован, он должен быть предварительно отсортирован. В оболочках, которые понимают замену процесса с помощью <( ... ) , это мое

 join -t, -a 1 -a 2 -o0,1.2,2.2 -e ' -' <( sort file1 ) <( sort file2 ) 
  • как использовать patch и diff для объединения двух файлов
  • Как объединить два текстовых файла в один файл без использования cat или sed
  • Слияние и добавление таблиц для создания главной таблицы из нескольких таблиц
  • Сравните первый столбец из 2-х файлов на основе второго столбца, используя разделитель;
  • Сравнить 2 столбца в 2 разных файлах
  • Восстановление почтовых сообщений Maildir из резервной копии на другом компьютере (так что соглашения об именах файлов отличаются)
  • Слияние файлов - одно и то же имя, другое расширение
  • Программа обновления файлов конфигурации
  • Копия Vimdiff выше / ниже
  • Объединить несколько файлов HTML в обратном порядке?
  • Какой язык сценариев я могу использовать для автоматизации процесса конкатенации и копирования?
  • Linux и Unix - лучшая ОС в мире.