Я потратил день, пытаясь понять это, но безуспешно. У меня есть два таких файла:
File1:
chr id pos
14 ABC-00 123
13 AFC-00 345
5 AFG-99 988
File2:
index id chr
1 ABC-00 14
2 AFC-00 11
3 AFG-99 7
Я хочу проверить, имеет ли значение chr в файле 1! = Из chr в файле 2 для того же идентификатора, если это правда, я хочу напечатать несколько столбцов из обоих файлов, чтобы получить результат, подобный приведенному ниже.
Ожидаемый выходной файл:
ID OLD_chr(File1) NEW_chr(File2)
AFC-00 13 11
AFG-99 5 7
.....
Total number of position changes: 2
I есть одно предостережение. В файле 1 я должен заменить некоторые значения в столбце $ 1 перед сравнением файлов. Примерно так:
30 and 32 >> X
31 >> Y
33 >> MT
Потому что в файле 2 эти значения кодируются именно так. А затем сравните два файла. Как, черт возьми, я могу этого добиться?
Я пытался перекодировать файл 1:
awk '{
if($1=30 || $1=32) gsub(/30|32/,"X",$1);
if($1=31) gsub(/31/,"Y",$1);
if($1=33) gsub(/33/,"MT",$1);
print $0
}' File 1 > File 1 Recoded
И я пытался сопоставить столбцы и распечатать результат с помощью:
awk 'NR==FNR{a[$1]=$1;next} (a[$1] !=$3){print $2, a[$1], $3 }' File 1 File 2 > output file