Я хочу сравнить два файла
Файл 1:
evm.TU.PTPU-T1. PF00808
evm.TU.PTP-T1 PF00498
evm.TU.PTPX-T1 PF00250
evm.TU.PAN-T1 PF00817
Файл 2:
PF00808 CL0012 Histone CBFD_NFYB_HMF Histone-like transcription factor
PF00498 CL0357 SMAD-FHA FHA FHA domain
PF00817 CL0123 HTH Forkhead Forkhead domain
Вывод:
evm.TU.PTPU-T1 PF00808 CL0012 Histone CBFD_NFYB_HMF Histone-like
evm.TU.PTP-T1 PF00498 CL0357 SMAD-FHA FHA FHA domain
evm.TU.PAN-T1 PF00817 CL0123 HTH Forkhead Forkhead domain
Я пробовал команду ниже
awk 'FNR==NR{a[$1]=$2;next} ($1 in a){print $0,a[$1]}' file2 file1 >file3
, но она печатает только Второй столбец файла 2, не всю строку.
PF00808 evm.TU.PTPU-T1 CL0012
Пожалуйста, дайте мне знать, как добавить всю подходящую строку файла 2 на вывод, а не только второй столбец
У вас есть несколько вариантов здесь:
СОХРАНИТЬ целые строки $ 0
из File2
в массив шпонкой на его $ 1
; затем посмотреть $ 1
из File1
на основе ключа в его $ 2
:
$ AWK «NR == FNR {а [$ 1] = $ 0; Далее} ($ 2 в а) {Печать 1 $, A [$ 2]} 'file2 file1
evm.tu.ptpu-t1. PF00808 CL0012 Histone CBFD_NFYB_HMF Гистонско-транскрипционный фактор
evm.tu.ptp-t1 pf00498 cl0357 smad-fha fha fha fha
evm.tu.pan-t1 pf00817 cl0123 hth forkhead forkhead домен
Сохраните значения $ 1
значений file1
, которые включены в $ 2
, затем посмотрите на соответствующие целые линии file2
на основе ключа В его $ 1
$ awk 'nr == fnr {A [$ 2] = $ 1} ($ 1 at a) {Печать [$ 1], $ 0}' file1 file2
evm.tu.ptpu-t1. PF00808 CL0012 Histone CBFD_NFYB_HMF Гистонско-транскрипционный фактор
evm.tu.ptp-t1 pf00498 cl0357 smad-fha fha fha fha
evm.tu.pan-t1 pf00817 cl0123 hth forkhead forkhead домен