Я пытаюсь использовать аналогичную команду из 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
Вы рядом.
awk 'NR==FNR {a[$1]=$2;next}{print $0, ($1 in a ? a[$1]:"NA")}' f2 f1
Ваша проблема в том, что вы указали file2 в качестве первого аргумента, однако вы думали , что это было file1. file2 вообще не имеет $6.
file2
file1
$6