Найти значение в другом файле, если оно совпадает с print - PullRequest
0 голосов
/ 18 февраля 2019

В следующем случае.Я хотел бы найти значения, которые совпадают в: файл1: столбцы 5 и 6 с файлом2: столбцы 1

Если значения одинаковы в обоих файлах, распечатайте как нужный выходной файл

file1

31429,36689,313212.5,2334362.5,30001,35825,31308,302412.50 2316512.50
31429,36701,313362.5,2334362.5,31429,36681,31311,2334363,31429
31429,36713,313512.5,2334362.5,31429,36719,31358,303312.50 2316512.50
31429,36749,313962.5,2334362.5,31429,36751,31398,2334362,31429
31429,36809,314712.5,2334362.5,31429,36803,31463,2334361,31429
31429,36821,314862.5,2334362.5,30001,35945,31481,2334363,31429

file2

3000135825 302412.50 2316512.50
3000135837 302562.50 2316512.50
3000135849 302712.50 2316512.50
3000135861 302862.50 2316512.50
3000135873 303012.50 2316512.50
3000135885 303162.50 2316512.50
3000135897 303312.50 2316512.50
3000135909 303462.50 2316512.50
3000135921 303612.50 2316512.50
3000135933 303762.50 2316512.50
3000135945 303912.50 2316512.50

желаемый вывод

3000135825 302412.50 2316512.50 30001 35825
3000135945 303912.50 2316512.50 30001 35945

Я пытался

awk '
FNR==NR{
  a[$5 OFS $6]=$5 $6
  next
}
(($1) in a){
  print $0,a[$1]
}
' FS="[, ]"  file1 FS=" "  file2

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Этот однострочник может помочь:

awk -F'[, ]' 'NR==FNR{a[$1]=$0;next}$5$6 in a{print a[$5$6],$5,$6}' f2 f1
0 голосов
/ 18 февраля 2019

Простой способ сделать это:

awk -F, 'NR==FNR{a[$5 $6]=$5;b[$5 $6]=$6;next;} $1 in a{print $0,a[$1],b[$1]}' file1 FS=' ' file2
3000135825 302412.50 2316512.50 30001 35825
3000135945 303912.50 2316512.50 30001 35945

Или избегать установки FS во второй раз:

awk -F'[, ]' 'NR==FNR{a[$5 $6]=$5;b[$5 $6]=$6;next;} $1 in a{print $0,a[$1],b[$1]}' file1 file2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...