Печатать выбранные столбцы из файла, если строка упоминается в другом файле.

Мой первый файл содержит такие данные, как:

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
задан 11 August 2020 в 13:21

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.

0
ответ дан 18 August 2020 в 15:13

Другие вопросы по тегам:

Похожие вопросы: