AWK - сопоставьте первые 3 поля, выведите $ 6 и $ 7 из обоих файлов в одной строке - PullRequest
0 голосов
/ 29 мая 2018

Мои два входных файла изменились, и мне нужно сопоставить первые три поля двух файлов.Когда совпадение сделано, я хочу напечатать 1 доллар (из которых было найдено совпадение) и 6 и 7 долларов за файл1 и 6 и 7 долларов за файл два.Оригинальный код был одним лайнером AWK, чтобы соответствовать только первому полю.

Файл1

BSTN-SANJ   BSTN    SANJ    0   0   50  105910
MRFD-SANJ   MRFD    SANJ    0   0   40  69105
NYRK-SANJ   NYRK    SANJ    0   0   30  905010
SANJ-HMRD   SANJ    HMRD    0   0   25  69010
SANJ-NRFK   SANJ    NRFK    0   0   38  61506

Файл2

BSTN-SANJ   BSTN    SANJ    0   0   45  601251
MRFD-SANJ   MRFD    SANJ    0   0   39  919591
NYRK-SANJ   NYRK    SANJ    0   0   25  690155

Выход

BSTN-SANJ   50  105910  45  601251  
MRFD-SANJ   40  69105   39  919591  
NYRK-SANJ   30  905010  25  690155  

1 Ответ

0 голосов
/ 29 мая 2018

Это будет делать

awk -v OFS='\t' '
    {key = $1 OFS $2 OFS $3} 
    NR == FNR {f2[key] = $6 OFS $7; next} 
    key in f2 {print $1, $6, $7, f2[key]}
' file2 file1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...