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

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 ) 
  • Как скопировать / объединить два каталога, и если два файла имеют одинаковое имя, переименуйте более старый, добавив время его модификации
  • Использование awk, как получить желаемый результат из нескольких источников файлов
  • Как объединить раздел с gparted?
  • Программа обновления файлов конфигурации
  • Объединить несколько файлов HTML в обратном порядке?
  • Восстановление почтовых сообщений Maildir из резервной копии на другом компьютере (так что соглашения об именах файлов отличаются)
  • Данные стека из нескольких разделенных файлов в один, с переменными столбцами
  • Слияние и добавление таблиц для создания главной таблицы из нескольких таблиц
  • Слияние нескольких файлов с максимальной разницей в 1 строку
  • Объединение файлов журналов с разными форматами временных меток
  • Какой язык сценариев я могу использовать для автоматизации процесса конкатенации и копирования?
  • Interesting Posts

    Измените значения $ READLINE_LINE и $ READLINE_POINT внутри сценария bash

    unrar часть многостраничного файла rar

    Разрешения: Каков правильный способ предоставить Apache больше прав пользователя?

    Пользователь sssd и Active Directory не существует в CentOS

    Как настроить группу (gid) процесса, который я собираюсь запустить?

    Плохое чтение SSD-данных на Linux

    Как запустить скрипт, как только изменится номер недели?

    Способы входа в систему Linux

    Используя awk для изменения целого столбца как положительных, так и отрицательных значений, просто отрицательный?

    многопоточная обработка в AM1808 с использованием встроенного Linux

    Предотвращение создания определенных узлов / dev / input / event

    Поверните удаленный сервер в конфигурации openvpn

    Системные пренебрежения Летнее время

    Как хранить пакеты на отдельном диске для сохранения дискового пространства в Linux Mint?

    Как подключиться к другой машине через SSH?

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