2016-07-22 2 views
1

У меня есть 2 текстовых файла, которые я хочу объединить в новый файл.частичное слияние 2 текстовых файлов в linux

мой первый файл похож

DjScaffold1002 blastx protein_match 50305 51044 125 - . ID=DjScaffold1002:hit:2832:3.10.0.0;Name=sp|Q9UEW3|MARCO_HUMAN 
DjScaffold1002 blastx protein_match 50305 50892 208 - . ID=DjScaffold1002:hit:2833:3.10.0.0;Name=sp|Q60754|MARCO_MOUSE 
DjScaffold1002 blastx protein_match 44584 45176 145 - . ID=DjScaffold1002:hit:2834:3.10.0.0;Name=sp|Q7SIB2|CO4A1_BOVIN 

и второй файл =

Q9UEW3 MARCO 
Q60754 Marco 
Q7SIB2 COL4A1 

и мой ожидаемый результат, как, я имею в виду отображение часть 9-й строки столбца из первой строки с 1-го столбца второго файл должен быть следующим:

DjScaffold1002 blastx protein_match 50305 51044 125 - . ID=DjScaffold1002:hit:2832:3.10.0.0;Name=sp|Q9UEW3|MARCO_HUMAN;Symbol=MARCO 
DjScaffold1002 blastx protein_match 50305 50892 208 - . ID=DjScaffold1002:hit:2833:3.10.0.0;Name=sp|Q60754|MARCO_MOUSE;Symbol=Marco 
DjScaffold1002 blastx protein_match 44584 45176 145 - . ID=DjScaffold1002:hit:2834:3.10.0.0;Name=sp|Q7SIB2|CO4A1_BOVIN;Symbol=COL4A1 

Кроме того, я хотел сохранить строку из первого файла, e не отображается со вторым файлом.

Как можно выполнить это с помощью awk?

+2

Вы никогда не должны Grep, если вы используете AWK, так как AWK может сделать что-нибудь полезное, что grep может сделать. –

+0

Прошу прощения, но эта команда не будет работать для моих файлов. – user3616494

ответ

2

Вы можете использовать AWK, чтобы объединить их:

awk 'FNR == NR{a[$1]=$2; next} $2 in a{$0 = $0 ";symbol=" a[$2]} 1' f2 FS='[|]' f1 

L1 code=c|id1|;name=name1;symbol=symbol1 
L2 code=c|id2|;name=name1;symbol=symbol2 
L0 code=c|id0|;name=name0; 

Для отредактированных образцов:

awk 'FNR == NR{a[$1]=$2; next} $2 in a{$0 = $0 ";symbol=" a[$2]} 1' f2 FS='[|]' f1 

DjScaffold1002 blastx protein_match 50305 51044 125 - . ID=DjScaffold1002:hit:2832:3.10.0.0;Name=sp|Q9UEW3|MARCO_HUMAN;symbol=MARCO 
DjScaffold1002 blastx protein_match 50305 50892 208 - . ID=DjScaffold1002:hit:2833:3.10.0.0;Name=sp|Q60754|MARCO_MOUSE;symbol=Marco 
DjScaffold1002 blastx protein_match 44584 45176 145 - . ID=DjScaffold1002:hit:2834:3.10.0.0;Name=sp|Q7SIB2|CO4A1_BOVIN;symbol=COL4A1 
+0

Он работает с показанными образцами. Если ваши данные отличаются друг от друга, вы должны соответствующим образом обновить вопрос. – anubhava

+1

Уважаемый @anubhava, ваше последнее издание работает правильно. Я оценил вашу помощь. Ahmad – user3616494