Мой первый файл содержит такие данные, как:
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
, но файл не сгенерирован. Поскольку я новичок в этом, я столкнулся с серьезной проблемой. Любая помощь приветствуется.
Назовем ваши файлы 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.