Полное присоединение – bashLinux

Ответить
Anonymous
 Полное присоединение – bash

Сообщение Anonymous »

У меня есть два файла tsv. Первый содержит список кодов аэропортов с указанием года. Второй — среднесуточные посадки разных типов самолетов.
Я хотел бы создать третий файл, который объединяет данные из двух файлов, даже если между данными в файле1 нет совпадений. с данными в файле2. Насколько я понимаю, это эквивалент полного внешнего соединения sql.
Незаполненные ячейки объединенного вывода должны быть пустыми.
file1 — abbrvtd. тсв

Код: Выделить всё

Abbrvtd
LAM1999
LAM1998
LAM1997
LAM1996
LAM1995
LAM1994
TAW1999
TAW1998
TAW1997
TAW1996
TAW1995
TAW1994
DRN1999
DRN1998
DRN1997
DRN1996
DRN1995
DRN1994
файл2 — Landings.tsv

Код: Выделить всё

Abbrvtd Airport Codes   Year    Commercial  Passenger   Private Helicopter
LAM1999 LAM 1999    71.8    59.4    65.2    40.7
LAM1998 LAM 1998    71.8    58.8    64.7    40.5
LAM1997 LAM 1997    71.6    58.3    64.1    40.5
LAM1994 LAM 1994    70.8    55.8    63.1    70.8
TAW1999 TAW 1999    40.7    62.4    71.4    65.2
TAW1997 TAW 1997    40.5    60.9    70.8    64.1
TAW1996 TAW 1996    40.2    60.4    70.4    63.7
TAW1995 TAW 1995    40.2    59.9    70.3    60.9
TAW1994 TAW 1994    39.9    59.1    70.2    60.4
DRN1999 DRN 1999    39.7    58.7    40.5    59.9
DRN1994 DRN 1994    30.2    55.8    59.9    39.6
желаемый результат:

Код: Выделить всё

Abbrvtd Airport Codes   Year    Commercial  Passenger   Private Helicopter
LAM1999 LAM 1999    71.8    59.4    65.2    40.7
LAM1998 LAM 1998    71.8    58.8    64.7    40.5
LAM1997 LAM 1997    71.6    58.3    64.1    40.5
LAM1996
LAM1995
LAM1994 LAM 1994    70.8    55.8    63.1    70.8
TAW1999 TAW 1999    40.7    62.4    71.4    65.2
TAW1998
TAW1997 TAW 1997    40.5    60.9    70.8    64.1
TAW1996 TAW 1996    40.2    60.4    70.4    63.7
TAW1995 TAW 1995    40.2    59.9    70.3    60.9
TAW1994 TAW 1994    39.9    59.1    70.2    60.4
DRN1999 DRN 1999    39.7    58.7    40.5    59.9
DRN1998
DRN1997
DRN1996
DRN1995
DRN1994 DRN 1994    30.2    55.8    59.9    39.6
Ближе всего я подошел к коду ниже. но он возвращает результат, похожий на file2-landings.tsv
Я пробовал использовать различные итерации awk и теперь пытаюсь с соединением:

Код: Выделить всё

join -a 1 -a 2 -e NULL -t$"\t" -1 1 -2 1 -o 2.1,2.2,2.3,2.4,2.5,2.6,2.7 abbrvtd.tsv landings.tsv
Спасибо.
РЕШЕНО: решение @EdMorton генерирует необходимые выходные данные

Подробнее здесь: https://stackoverflow.com/questions/784 ... -join-bash
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»