我有一个文件包含感兴趣的基因名称(24423个基因),另一个文件包含所有基因的长度(41306个基因)。我只想要24424个基因的长度,但是当我使用grep
使用grep -wf file1 file2
甚至fgrep -Fwf file1 file2
时,我会得到一些多余的基因,因为我列表中的一些基因可能只包含意义或反感觉链,而如果引用文件可能同时包含这两种基因,那么这将被反映出来。
我想知道是否有办法从参考文件(file2)中删除所有不匹配的行?
谢谢。
P.S.这个问题也在biostars.org上
编辑-
file1
A1BG
A1BG-AS1
TSPAN6
多年期
MYB-AS1
file2
A1BG /A1BG/AC-2941
A1BG-AS1
TSPAN6 / 7923 /7923 7923
MYB-AS1
MYB-AS2
MYB-AS3
desired_output
A1BG /A1BG/AC-2941
A1BG-AS1
TSPAN6 / 7923 /7923 7923
MYB-AS1
但我总是得到MYB-AS2和MYB-AS3
发布于 2018-02-21 08:05:16
$ cat f1
A1BG
A1BG-AS1
TSPAN6
MYB
MYB-AS1
$ cat f2
A1BG 2941
A1BG-AS1 560
TSPAN6 7923
MYB-AS1 362
MYB-AS2 713
MYB-AS3 396
$ grep -Fwf f1 f2
A1BG 2941
A1BG-AS1 560
TSPAN6 7923
MYB-AS1 362
MYB-AS2 713
MYB-AS3 396
grep
在这里帮不了什么忙,因为MYB
会将MYB-
与-
匹配为word边界
使用awk
代替
$ awk 'NR==FNR{a[$1]; next} $1 in a' f1 f2
A1BG 2941
A1BG-AS1 560
TSPAN6 7923
MYB-AS1 362
NR==FNR{a[$1]; next}
以第一个文件中的第一个字段作为键构建一个数组。$1 in a
行。整个字段必须匹配https://stackoverflow.com/questions/48900160
复制相似问题