2014-02-27 4 views
2

У меня есть работа по добавлению данных строки в один файл в другой файл с одинаковым идентификатором. Какую программу я могу использовать, завершите эту работу.Присвоение данных из одного файла в другой

Входной file1

481063384 PBPb 
481063384 PBPb 
481063384 LT_GEWL 
481063384 lysozyme_like 
481063384 SLT 
481063384 emtA 
481063406 Hsp33 
481063406 Hsp33 
481063406 COG1281 
481063406 HSP33 

Входной file2

481063384 putative soluble lytic transglycosylase 
481063406 chaperonin HslO 

Желаемая Выход

481063384 putative soluble lytic transglycosylase PBPb 
481063406 chaperonin Hsp33 

Условие первое мне нужно извлечь первую строку повторяющейся числа, и мне нужно назначить или добавить , Пожалуйста, помогите мне. Я думаю, awk будет полезен, но я плохо разбираюсь в программировании awk.

+0

Каков шаблон для получения 2-го столбца из 1-го файла? Я вижу много строк с '481063384' и другой 2-й колонкой и не понимаю, почему вы печатаете' PBPb'. – fedorqui

+0

Как вы видите много строк с 481063384 (это номер присоединения к белку), сначала мне нужно напечатать первую строку первого 481063384 n, отбросить другую 481063384, мне нужно повторить то же самое для каждого отдельного номера входа. то я хочу добавить вывод к тому же номеру присоединения. в другом файле. Я думаю, что U понимаю мой вопрос к настоящему времени @ fedorqui –

ответ

1

Вы можете попробовать это,

awk 'NR==FNR{ if($1 in a) next;a[$1]=$2;next}{$0=$0" "a[$1]}1' file1 file2 
+0

Большое вам спасибо. Действительно, действительно –

+0

Nice; однако, можно переупаковать каждую строку путем присвоения '$ 0' путем замены' {$ 0 = $ 0 "" a [$ 1]} 1' на '{print $ 0" "a [$ 1]}'. – mklement0

1

Вы можете использовать присоединиться и если вы хотите, первая строка каждого, использование AWK:

join file2 file1 | awk '{if(a!=$1) print}{a=$1}' 

дает:

481063384 putative soluble lytic transglycosylase PBPb 
481063406 chaperonin HslO Hsp33 
+0

потрясающий! :) +1 –

+0

Thank U это тоже работает, но здесь он игнорировал эти числа, а не в файле1. Большое спасибо –

+0

Я не понимаю, что вы имели в виду под «игнорировали эти цифры не в файле1» – jrjc

1

Другой способ с awk:

awk 'NR==FNR{!seen[$1]++&&line[$1]=$2;next}$0=$0 FS line[$1]' file{1,2} 
+0

+1 для более сжатой версии принятого ответа, но и здесь, перерисовывая каждую строку, присваивая '$ 0 'можно избежать, заменив' $ 0 = $ 0 FS line [$ 1] 'на' {print $ 0 FS line [$ 1]} '. – mklement0

+1

@ mklement0 Спасибо или '{print $ 0, строка [$ 1]}' ';)'. –

Смежные вопросы