У меня проблемы с grep и awk. Я думаю, это потому, что мой входной файл содержит текст, который выглядит как код.Соответствие текста с помощью grep или awk
Входной файл содержит имена идентификаторов и выглядит следующим образом:
SNORD115-40
MIR432
RNU6-2
Упоминание файл выглядит следующим образом:
Ensembl Gene ID HGNC symbol
ENSG00000199537 SNORD115-40
ENSG00000207793 MIR432
ENSG00000266661
ENSG00000243133
ENSG00000207447 RNU6-2
Я хочу, чтобы соответствовать имена ID из моего исходного файла с моей ссылкой файл и распечатать соответствующие идентификационные номера, чтобы выходной файл выглядел следующим образом:
ENSG00000199537 SNORD115-40
ENSG00000207793 MIR432
ENSG00000207447 RNU6-2
Я пробовал этот цикл:
exec < source.file
while read line
do
grep -w $line reference.file > outputfile
done
Я также пытался играть с эталонным файлом, используя AWK
awk 'NF == 2 {print $0}' reference file
awk 'NF >2 {print $0}' reference file
, но я только получить один из grep'd идентификаторов.
Любые предложения или более простые способы сделать это будут замечательными.
Это будет производить ложные срабатывания 'SNORD115-40' т.е. в файле ввод будет также соответствовать' SNORD115-401' в ссылке ЭСТА. –
@sudo_O Хорошая точка, спасибо –
Мы можем использовать «fgrep -wf source.file reference.file», чтобы избежать ложных срабатываний. –