2012-08-13 67 views
0

更容易加入我有一個相當單片數據庫我建設重的那一刻,我想加入半匹配內容的3個表,我有幾套這些,但他們都是三個一組。這裏的情況是:AWK-sed的3個表有一個幾乎相同的列...肯定比蟒蛇

- 注所有表是ASCII格式,deliminated空間---

T1_01 =表1 =

1 + 'stuff1' + additional content 1 (where additional content only sometimes available) 

2 "" 

3 "" 

....400 

T1_02 =表2 =

1 + "different stuff" + additional content 2 

2 "" 

3 "" 

... 400 

T1_03 =表3 =

5 cols yet other stuff + 001 + additional content 3 

5 cols yet other stuff + 003 "" 

5 cols yet other stuff + 007 "" 

... 

5 cols yet other stuff + 399 some rows are skipped, varies which ones 

5 cols yet other stuff + 400 

我想,每一個「組」我有3個表,因爲這些都在一個方便的方式分組,即T1_01,T1_02,T1_03將爲T2_01,T2_02,T2_03是表1,2,3組1,並再次。我總共需要做這個約60倍和表格輸出,我希望的是:

T1_=

1 + 'stuff1' + additional content 1 1 + "different stuff" + additional content 2 5 cols yet other stuff + 001 + additional content 3 
2 + 'stuff1' + additional content 1 2 + "different stuff" + additional content 2 "something to fill in the empty spaces, like a set of -99.9 values" 
3 + 'stuff1' + additional content 1 3 + "different stuff" + additional content 2 5 cols yet other stuff + 003 + additional content 3 
... 
400 "" 

現在我做了一個初始運行和

join -1 1 -2 1 T1_01 T1_02 > T1_012的偉大工程,但只做前兩個 和

join -1 1 -2 6 T1_01 T1_03 ...因爲001不工作是不是1

和我希望能運行在一個去,然後像做 sed something awk $(cat list_of_T01) $(cat list_of_T02) $(cat list_of_T03)作爲批處理作業運行的所有3個表。我一直在學習python,所以這可能在那裏,但我肯定AWK更容易?歡迎任何建議。

+2

有時解釋給陌生人一個問題,提示從提問的回答。我希望這是你的情況。否則,請顯示真實表格和預期結果的示例。 – potong 2012-08-13 07:01:46

回答

1

試試這個:

join -1 1 -2 6 <(sed 's/^[0-9] /00&/;s/^[0-9][0-9] /0&/;' T1_01) T1_03 

或這一個,如果你的分隔符是不是空間:

join -1 1 -2 6 <(sed 's/^[0-9][^0-9]/00&/;s/^[0-9][0-9][^0-9]/0&/;' T1_01) T1_03 
+0

我認爲分隔符是一個選項卡,但我認爲它看起來像是用於這些目的的空間。這就是說,使用上述,我不能得到一個比賽,我「匹配」 1,2,3,... 10,11,12,......有399,400 001,002,003,... 010011012,399,400 ......在相應的文件中。我'認爲'上面它只是增加了零?此外,我只能按照您的建議匹配2/3個文件。我認爲我需要的是'00'嗎?被'?'取代和'0 ??'被'??'取代。感謝您的想法! – Astronomyde 2012-08-13 07:37:09

+0

@ user1594443最好是你的NUMS前加零,導致在這兩個文件中沒有零它是第一列,你不應該關心它可能會影響其他內容。然而,如果你要改變第五列,正則表達式變得相當複雜,以避免改變一些其他的東西的可能性。 – rush 2012-08-13 07:47:22

+0

感謝您的幫助,我現在明白了。另外@potong,我認爲實際的巨大表格可能會混淆這個問題,但在這裏是文件的頂部。我的T1_01是:1 _P10644 0.816 123.04 2450.3 74.2 15.34 -1.553 -4.135 ,, 2 Parked ,, 3 _P10569 0.791 146.30 2650.7 75.3 15.50 -1.478 -3.41 ,, – Astronomyde 2012-08-14 00:14:10