如果另一文件中提到了该行,则打印文件中选定的列

如果另一文件中提到了该行,则打印文件中选定的列

我的第一个文件包含如下数据:

Gene symbol Gene name   Chromosome  Start   End Strand  Otter gene ID   Otter transcript ID Ensembl gene ID Ensembl transcript ID   Gene biotype    Transcript biotype


OR4G4P  olfactory receptor, family 4, subfamily G, member 4 pseudogene  1   52473   53312   +   OTTHUMG00000185779  OTTHUMT00000471235  ENSG00000268020 ENST00000606857 unprocessed_pseudogene  unprocessed_pseudogene


OR4G11P olfactory receptor, family 4, subfamily G, member 11 pseudogene 1   57598   64116   +   OTTHUMG00000001095  OTTHUMT00000492680  ENSG00000240361 ENST00000642116 transcribed_unprocessed_pseudogene  processed_transcript

第二个文件仅包含基因名称:

Ectopic
OR10J3
OR2C3
OR2W3
OR2T8
OR2T6

我想从第一个文件中检索第二个文件中也存在的“基因”的特定列(1、3、4 和 5)。

我使用了 awk 命令:

 awk -F, 'FNR==NR {a[$1]; next}; ($1 in a) {print}' OR.csv ectopic.csv > OR_ect.csv

但没有生成任何文件。由于我是新手,因此我遇到了很多问题。任何帮助我都非常感谢。

答案1

我们将您的文件命名为 datafile.txt(主要数据)和 listfile.txt(基因名称)。

首先从 datafile.txt 中提取名称出现在 listfile.txt 中的所有行

grep -f listfile.txt datafile.txt > temp.txt

现在使用 awk 从 temp.txt 中提取所需的列

awk -F, '{print $1,$3,$4,$5}'

(并删除 temp.txt 文件)

您可以通过将 grep 直接导入 awk 来消除临时文件。

相关内容