Поднабор данных на основе значений столбца со значениями столбца из других данных и объединение в Bash - PullRequest
2 голосов
/ 27 мая 2020

У меня есть два данных, и я хочу разделить data1 на основе другого значения столбца data2 и объединить, мои data1 выглядят так:

ID   address   phone
123 ....      .....
456 ....      .....
789 ....      .....
101 ....      .....

, а data2 выглядит так:

ID   City     Zipcode   if_travel
123  ....     ....        ....
456  ....     ....        ....

Я надеюсь получить данные вроде:

ID   address   phone   City     Zipcode   if_travel
123  ....      .....   ....     ....        ....
456  ....      .....   ....     ....        ....
789  ....      .....    NA       NA          NA
101  ....      .....    NA       NA          NA

Этот процесс похож на левое соединение в python, но есть ли способ сделать тот же процесс в команде bash? Спасибо!

1 Ответ

1 голос
/ 27 мая 2020

Есть много способов сделать это; вот один:

join -o '0,1.2,1.3,2.2,2.3,2.4' -a1 -e 'NA' <(sort file1.txt) <(sort file2.txt) | awk '{printf "%-7s %-7s %-7s %-7s %-7s %7s\n",$1,$2,$3,$4,$5,$6}' | sort -nk1

ввод:

файл 1:

ID   address phone
123 jordan   123
456 usa      144
789 bla      606
101 bla      1616

файл 2:

ID   City Zipcode if_travel
123  amman 2222   yes
456  zarqa 3030   no

вывод:

ID      address phone   City    Zipcode if_travel
101     bla     1616    NA      NA           NA
123     jordan  123     amman   2222        yes
456     usa     144     zarqa   3030         no
789     bla     606     NA      NA           NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...