2016-02-28 118 views
-1

我有這種格式的兩個文本文件中的列:的Linux - 操縱兩個文本文件

文件-1:

Class Pos Ref Alt Raw_score Actual_Score 
1  50203 Y  E  -0.00254  3.298 
5  6357 G  V  1.358  10.685 
2  87521 A  H  0.6587  6.3354 

文件-2:

Class Pos Ref Alt  Info 
5  6357 G  V  ACT/wo%%$2.25;56842;ALT 
11  25684 H  A  GEP/hq#$..25;69875;Trans 
3  258 G  L  KPD/ng?~88q68;8954;Inter 

如果initial four columnsFile-1File-2initial four columns匹配,然後將文字Raw_scoreActual_score及其values在匹配線的末端,分離與;標誌,如:

輸出:

5  6357 G  V  ACT/wo%%$2.25;56842;ALT;Raw_score=1.358;Actual_score=10.685 
+2

你可能想要閱讀'join',還有'awk'和'sort'。 –

+0

可能重複的[加入多個字段使用Unix加入](http://stackoverflow.com/questions/2619562/joining-multiple-fields-using-unix-join) – tripleee

+0

Yups,但加入模式在我的情況是不同的。 –

回答

1
$ awk '{k=$1FS$2FS$3FS$4}NR==FNR{if(NR>1)a[k]=";"b"="$5";"c"="$6;else{a[k]="";b=$5;c=$6}next}k in a{print $0a[k]}' file1 file2 
Class Pos Ref Alt  Info 
5  6357 G  V  ACT/wo%%$2.25;56842;ALT;Raw_score=1.358;Actual_Score=10.685 

如果你不明白,那麼腳本讀的書有效AWK編程,第4版,由Arnold Robbins撰寫並修改腳本以包含空白字符,換行符,縮進,有意義的變量名等,以使其更清晰 - 這樣做可以幫助您學習該語言。