awk сравнивает два файла и заполняет пустые строки с помощью NA - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь использовать аналогичную команду из awk, сравнивать столбцы из двух файлов, вменять значения другого столбца , и просматривал различные вопросы, похожие на мои поиск в столбце awk из одного файла, если совпадают столбцы печати из обоих файлов , Как импортировать поля в других столбцах, соответствующие одному общему полю, в двух файлах с `NA` во всех несопоставленных столбцах , awk сравнивает 2 файла, 2 поля различного порядка в файле, выводит на печать или объединяет и не совпадает строки с файлами, которые имеют больше полей, но я не могу заставить его работать. Я также прочитал от http://theunixshell.blogspot.com/2012/12/i-have-two-files-file-1-contains-3.html, чтобы увидеть, будет ли это работать, но у меня все еще проблемы:

Файл 1:

xx NC1 12 13 ! pro

xy NC1 15 17 ! pro

yx NC1 18 20 ! pro

yy NC1 22 28 ! pro

Файл 2

xx ds

xy jt

yy wp

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

xx NC1 12 13 ! pro ds

xy NC1 15 17 ! pro jt

yx NC1 18 20 ! pro NA

yy NC1 22 28 ! pro wp

код, который я использую:

awk 'NR==FNR { a[$1]=$6; next }{print $0 "   "  ($2 in a ? a[$2] : "NA")}' file2 file1 

Так что в основном мой вывод дает мне новый столбец, который все "NA", что, очевидно, не то, к чему я пытаюсь добраться.

выход:

xx NC1 12 13 ! pro NA

xy NC1 15 17 ! pro NA

yx NC1 18 20 ! pro NA

yy NC1 22 28 ! pro NA

1 Ответ

0 голосов
/ 05 июля 2018

Вы рядом.

awk 'NR==FNR {a[$1]=$2;next}{print $0, ($1 in a ? a[$1]:"NA")}' f2 f1

Ваша проблема в том, что вы указали file2 в качестве первого аргумента, однако вы думали , что это было file1. file2 вообще не имеет $6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...