Voor mijn studie ben ik bezig met een genoom-project en heb een tweetal bestanden die ik graag samen wil voegen.
Feitelijk gaat het om het volgende
Iemand een idee hoe ik dat in AWK of SED kan oplossen? Perl is natuurlijk ook prima.
Hierbij een aantal voorbeeld bestanden om mee te spelen - maakt het denk ik makkelijker:
Bestand_1
Bestand_2
Gewenste output:
Feitelijk gaat het om het volgende
code:
1
2
3
4
5
6
7
8
9
| VOOR iedere regel in bestand_1
ALS [nummer in kolom 2 in bestand 1]
GELIJK IS AAN [nummer kolom 4 in [i][u]een regel[/u][/i] in bestand 2]
OF GELIJK IS AAN [nummer kolom 5 in [i][u]een regel[/u][/i] in bestand 2]
OF valt tussen [nummer in kolom van 4 en kolom 5 in een regel van bestand_2]
DAN
voeg kolom 3, 7 en 9 uit [i][u]een regel[/u][/i] uit bestand_1 toe aan kolom 3, 4 en 5 in bestand_1
En dat voor alle +/- 1 miljoen regels. |
Iemand een idee hoe ik dat in AWK of SED kan oplossen? Perl is natuurlijk ook prima.
Hierbij een aantal voorbeeld bestanden om mee te spelen - maakt het denk ik makkelijker:
Bestand_1
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| SOME_NON_RELEVANT_STRING 142 SOME_NON_RELEVANT_STRING 182 SOME_NON_RELEVANT_STRING 320 SOME_NON_RELEVANT_STRING 321 SOME_NON_RELEVANT_STRING 322 SOME_NON_RELEVANT_STRING 471 SOME_NON_RELEVANT_STRING 488 SOME_NON_RELEVANT_STRING 497 SOME_NON_RELEVANT_STRING 541 SOME_NON_RELEVANT_STRING 545 SOME_NON_RELEVANT_STRING 548 SOME_NON_RELEVANT_STRING 4105 SOME_NON_RELEVANT_STRING 15879 SOME_NON_RELEVANT_STRING 26534 SOME_NON_RELEVANT_STRING 30000 SOME_NON_RELEVANT_STRING 30001 SOME_NON_RELEVANT_STRING 40001 SOME_NON_RELEVANT_STRING 44752 SOME_NON_RELEVANT_STRING 50587 SOME_NON_RELEVANT_STRING 87512 SOME_NON_RELEVANT_STRING 96541 SOME_NON_RELEVANT_STRING 99541 SOME_NON_RELEVANT_STRING 99871 |
Bestand_2
code:
1
2
3
4
5
6
7
8
9
10
11
| SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A1 0 38 B1 C1 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A2 40 2100 B2 C2 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A3 2101 9999 B3 C3 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A4 10000 15000 B4 C4 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A5 15001 30000 B5 C5 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A6 30001 40000 B6 C6 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A7 40001 50001 B7 C7 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A8 50001 50587 B8 C8 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A9 50588 83054 B9 C9 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A10 83055 98421 B10 C10 SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A11 98422 99999 B11 C11 |
Gewenste output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| 142 A2 B2 C2 182 A2 B2 C2 320 A2 B2 C2 321 A2 B2 C2 322 A2 B2 C2 471 A2 B2 C2 488 A2 B2 C2 497 A2 B2 C2 541 A2 B2 C2 545 A2 B2 C2 548 A2 B2 C2 4105 A3 B3 C3 15879 A5 B5 C5 26534 A5 B5 C5 30000 A5 B5 C5 30001 A6 B6 C6 40001 A7 B7 C7 44752 A7 B7 C7 50587 A8 B8 C8 87512 A10 B10 C10 96541 A10 B10 C10 99541 A11 B11 C11 99871 A11 B11 C11 |
[ Voor 68% gewijzigd door -Elmer- op 13-05-2013 16:30 ]