String auf bestimmte Zeichenfolge prüfen/finden?
String auf bestimmte Zeichenfolge prüfen/finden?
HI Leute,
versuche gerade ein kleines bash Script zu schreiben.
Jetzt steh ich vor einem Problem ich würde gerne eine case einbauen mir ist da nur was nicht ganz klar.
Also nehmen wir an ich hab den str1="Peter_Lustig....S01E01"
Ich möchte jetzt S01 extrahieren bzw. in der case auf S01 prüfen.
S01; S02 .... S20 sind natürlich alle möglich, auch s01, s02... s20 sind möglich.
Ich denke mann mus erst den Teil extrahieren, damit er dann der case übergeben werden kann. Nur ist mir nicht klar wie der befehl dazu heißt.
Offtopic:
Kann ich eigentlich mit c++ alles machen wie mir der bash, bzw. kann ich alles was ich mit der bash programmiere auch in c++ schreiben. So das es auch funktioniert in der Konsole?
mfg eimer
versuche gerade ein kleines bash Script zu schreiben.
Jetzt steh ich vor einem Problem ich würde gerne eine case einbauen mir ist da nur was nicht ganz klar.
Also nehmen wir an ich hab den str1="Peter_Lustig....S01E01"
Ich möchte jetzt S01 extrahieren bzw. in der case auf S01 prüfen.
S01; S02 .... S20 sind natürlich alle möglich, auch s01, s02... s20 sind möglich.
Ich denke mann mus erst den Teil extrahieren, damit er dann der case übergeben werden kann. Nur ist mir nicht klar wie der befehl dazu heißt.
Offtopic:
Kann ich eigentlich mit c++ alles machen wie mir der bash, bzw. kann ich alles was ich mit der bash programmiere auch in c++ schreiben. So das es auch funktioniert in der Konsole?
mfg eimer
Gi´me hope Juana.....
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Hallo,
eine case-Anweisung in der Shell funktioniert grundsätzlich so:
Entweder gibst du dann für Muster immer den kompletten Namen an, ober aber du schneidest mit Hilfe von regular Expression den gewünschten Teil aus dem String und nimmst dann diesen.
eine case-Anweisung in der Shell funktioniert grundsätzlich so:
Code: Alles auswählen
case Ausdruck in
Muster1) Befehle;;
Muster2) Befehle;;
Muster3|Muster4) Befehle;;
MusterN) Befehle;;
*) Befehle;;
esac
Oh, yeah!
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Ok kein Problem den mit cut zu schneiden. Leider muss ich die Zeichenfolge erstmall in meinem Ausgangstring finden. Das ist mein Problem.
mfg eimer
mfg eimer
Gi´me hope Juana.....
-
- Beiträge: 2186
- Registriert: 18.09.2005 15:52:02
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Wie wär's mit perl?jhr
Code: Alles auswählen
#!/usr/bin/perl
$string = "runtergeladene serie...S01e02.wen_stört's?";
if($string =~ m/s(\d+)e(\d+)/i) {
$season = $1;
$episode = $2;
}
print "Staffel: $season, Episode: $episode\n";
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Dann poste dochmal den Ausgangsstring und wir schauen, was wir wie abschneiden.
Oh, yeah!
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Der string ist variabel also immer anderst.
Und wenn ich Perl könnte würd ich es auch machen, das ist ja nur ein Teil von einem großen ganzen, hier komm ich nur nicht weiter.gibts nicht sowas wie find (str1="Pe",str2="Peter") Ausgabe 1 für erstes Zeichen?
Offtopic: Kann ich mit Perl auch wie in der shell "rm-r" usw. aufrufen? Dann wäre Perl mal ein versuch wert.
Und wenn ich Perl könnte würd ich es auch machen, das ist ja nur ein Teil von einem großen ganzen, hier komm ich nur nicht weiter.gibts nicht sowas wie find (str1="Pe",str2="Peter") Ausgabe 1 für erstes Zeichen?
Offtopic: Kann ich mit Perl auch wie in der shell "rm-r" usw. aufrufen? Dann wäre Perl mal ein versuch wert.
Gi´me hope Juana.....
-
- Beiträge: 2186
- Registriert: 18.09.2005 15:52:02
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Perl hat eigene Befehle, also jain :) http://www.cs.cmu.edu/afs/cs/user/rgs/m ... -file.html
Was du suchst, sind Regular Expressions, wie ich sie in dem Code-Beispiel oben benutzt habe:
Wir gucken, ob ein String diesen Ausdruckenthält (das m vorne für "match" und das i am Ende für "case insensitive", also ohne Berücksichtigung der Groß-/Kleinschreibung). Der Ausdruck ist simpel... Es kommt ein "s", dann eine Zahl (\d für digit), die ein oder mehr Zeichen (+) haben soll, dann ein "e" und wieder die Zahl. Was in Klammern steht wird in die Variablen $1 und $2 gesteckt, einfach der Reihe nach, und kann dann ausgelesen werden. Also haben wir in $1 die Staffel und in $2 die Episode...
jhr
//edit: weil ich gerade einen netten Tag hab :)Nicht schön, funktioniert aber, nämlich so:
Was du suchst, sind Regular Expressions, wie ich sie in dem Code-Beispiel oben benutzt habe:
Wir gucken, ob ein String diesen Ausdruck
Code: Alles auswählen
s(\d+)e(\d+)
jhr
//edit: weil ich gerade einen netten Tag hab :)
Code: Alles auswählen
#!/usr/bin/perl
$parameter = $ARGV[0];
if(<STDIN> =~ m/s(\d+)e(\d+)/i) {
$season = $1;
$episode = $2;
$matched = "true";
}
if($matched) {
if($parameter eq "-s"){ print $season; exit; }
if($parameter eq "-e"){ print $episode; exit; }
}
exit 1;
Code: Alles auswählen
prompt$ echo "serie s02e13.avi" | script.pl -s
02
promtp$ echo "serie s02e13.avi" | script.pl -e
13
Zuletzt geändert von jhr-online am 12.09.2008 12:12:01, insgesamt 1-mal geändert.
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Man kann mit perl auch unix-Befehle aufrufen (system, qx).
Aber zeig uns doch mal wie du der String aussieht. Regular Expression kann man auch in der bash benutzen, z.B. sed.
Aber zeig uns doch mal wie du der String aussieht. Regular Expression kann man auch in der bash benutzen, z.B. sed.
Oh, yeah!
Re: String auf bestimmte Zeichenfolge prüfen/finden?
Sitz hier nicht an meinem Rechner also kann ich das nur aus dem Kopf machen waber was jhr genommen hat kommt schon hin
"www.serienjunkies.de...Peter.Lustig.S01e02.von.Robin.Dutt"
Regelmäßigkeiten, meine ich nicht zu erkennen in den ienzelnen aufrufen.
Ich versuch das jetzt mal in Perl vll. klappt das ja.
"www.serienjunkies.de...Peter.Lustig.S01e02.von.Robin.Dutt"
Regelmäßigkeiten, meine ich nicht zu erkennen in den ienzelnen aufrufen.
Ich versuch das jetzt mal in Perl vll. klappt das ja.
Gi´me hope Juana.....