Hallo
Ich habe gerade erst mit Perl angefangen. Daher kenne ich mich leider noch nicht wirklich aus.
Ich habe folgenden (noch unfertigen) Code geschrieben. Jedoch funktioniert er noch nicht wie gewünscht.
$data_file=„demo“;
open(DAT, $data_file) or die(„Could not open file!“;
while(){
#Nimmt nur Zeilen auf die mit „>“ anfangen
next if !($_=~/^>/);
push @seq_names,$_;
}
close(DAT);
for($k=0;$kU93944.1_238-348 in U93944.1/238-348 um
$tmp = substr($seq_names[$k],1);
$tmp =~ tr !_!/!;
chomp($tmp);
@testen = qx(grep „’$tmp\|SS_cons’“ FILE | grep -A1 „$tmp“);
}
Leider funktioniert der grep Aufruf nicht. Wenn ich ihn per echo ausgeben lasse, dann steht er eigentlich richtig da. Denn er soll lauten:
grep ‚U93944.1/238-348|SS_cons‘ FILE | grep -A1 U93944.1/238-348
Zur Erklärung.
Das FILE hat ungefähr 100 000 Zeilen und hat folgende Form:
irgendwelche zeilen
U93944.1/238-348
a9a344.3/28-38
E251.8/124-238
usw.
SS_cons
irgendwelche zeilen
U93944.1/238-348
a9a344.3/28-38
E251.8/124-238
usw.
SS_cons
usw.
Irgendwann kommt ein Block von Daten wo U93944.1/238-348 nicht enthalten ist. In dem Fall interessiere ich mich dann für SS_cons auch NICHT!
Deswegen filtere ich mir mit grep alle Zeilen mit U93944.1/238-348 und SS_cons aus.
Dies würde dann so aussehen:
U93944.1/238-348
SS_cons
U93944.1/238-348
SS_cons
SS_cons
SS_cons
SS_cons
Die letzten SS_cons interessieren mich nicht. Deswegen filtere ich noch 1 Zeile nach dem letzten U93944.1/238-348.
Somit sieht es dann so aus:
U93944.1/238-348
SS_cons
U93944.1/238-348
SS_cons
Jedoch weiß man nicht welchen String (also U93944.1/238-348) man sucht. Es können auch mehrere sein, die in der $data_file stehen.
Das Endergebnis soll dann so aussehen:
U93944.1/238-348
SS_cons
U93944.1/238-348
SS_cons
A93723.1/0-28
SS_cons
A93723.1/0-28
SS_cons
A93723.1/0-28
SS_cons
S203.3/29-189
SS_cons
Das Ergebnis muss ich dann noch weiter verarbeiten.
Ich hoffe, ich habe nicht all zu verwirrend geschrieben .
Ich glaube außerdem das ich in der letzten for-schleife irgendwie noch ein push benutzen muss damit das ganze Ergebnis in einem Array steht.
Für Hilfe bedanke ich mich bereits im voraus
Mfg
Dennis