我试图从一个fileA中提取基于fileB(匹配的)的行。
文件A
chr gene start stop pval
1 xic 455 467 0.005
2 ABD 5667 5789 0.03
5 GHE 4556 4784 0.23
6 sdg 4568 4677 0.558
文件B
ABD
GHE
所以结果是
chr gene start stop pval
2 ABD 5667 5789 0.03
5 GHE 4556 4784 0.34
我试试下面的代码:
grep-f B A>>A_B.txt
问题:
在这个示例文件中,一切运行良好,但当我在数据集中尝试时,它给出了实际的列表(ABD,GHE)以及其他一些列表(sdg)。。。
喜欢
chr gene start stop pval
2 ABD 5667 5789 0.03
5 GHE 4556 4784 0.34
6 sdg 4568 4677 0.558
建议:
我该怎么解决。。。
有没有可能集成一些代码,以便我只得到选定的列
期望输出:
chr gene pval
2 ABD 0.03
5 GHE 0.34
6 sdg 0.558
非常感谢
米
最佳答案
用锥子
awk 'FNR==NR{a[$2]=$0; if(NR==1) print $0} ($1 in a) {print a[$1]}' FileA FileB > output.txt
如果要选择列
awk 'FNR==NR{a[$1]=$0}($2 in a) {print $1,$2,$5}' FileB FileA > output.txt