Сравнение файлов в Linux

Не могли бы вы помочь мне с нижеследующим требованием?

У меня есть два файла FILE1 и FILE2 со следующим содержанием (пример):

FILE1:

Column1       Column2
------------------------
M             1.2
A             11
S             hostname
T             TCP
E             120
R             Y

FILE2:

Column1        Column2
---------------------------
A             12
M             1.3
T             SSL
S             hostname1

Порядок полей в FILE1 и FILE2 различаются, я хочу сравнить FILE1 и FILE2, взять 1-й столбец из FILE1 и выполнить поиск по всему столбцу 1 FILE2, и как только он найдет совпадение, он должен выбрать значение столбца 2 (из FILE2) и заменить значение в соответствующем поле в FILE1.

Благодарю, если кто-то может помочь в моем требовании.

0
12.01.2017, 08:58
1 ответ

Вы можете сделать что-то вроде:

$ join -o 0,1.2,2.2 -a 1 <(sort -k 1,1 FILE1) <(sort -k 1,1 FILE2) |
     awk '{print $1, $NF}'
A 12
E 120
M 1.3
R Y
S hostname1
T SSL

Или сохранить порядок строк в FILE1 :

$ awk '!n {a[$1] = $2; next}
   {print $1, $1 in a ? a[$1] : $2}' FILE2 n=1 FILE1
M 1.3
A 12
S hostname1
T SSL
E 120
R Y
1
28.01.2020, 02:46

Теги

Похожие вопросы