我遇到了grep和awk的问题。我认为这是因为我的输入文件包含看起来像代码的文本。使用grep或awk匹配文本
的输入文件中包含的ID名称,看起来像这样:
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 ID之一。
任何建议或更简单的方法,这样做会很好。
这会产生误报即'输入文件SNORD115-40'也将匹配'SNORD115-401'的参考等。 – 2013-05-09 09:15:00
@sudo_O好点,谢谢 – 2013-05-09 09:22:13
我们可以使用“fgrep -wf source.file reference.file”来避免误报。 – 2013-05-09 09:30:03