我的第一个文件包含如下数据:
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 来消除临时文件。