| Linux/UNIX Linuxverfechter finden hier Weggefährten. |
Diskussion: Shell: Aus einer Zeichenkette einen bestimmten Ausschnitt kopieren im Forum Linux/UNIX, in der Kategorie Operating Systems; Anzeige Ich möchte aus einer Zeichenkettenfolge einen bestimmten Bereich raus kopieren (Shell): Beispiel: HTML-Code: <a href= "mailto:" bbbb"><img src= "image.png" ...
![]() |
| | #1 (permalink) |
| Anzeige Ich möchte aus einer Zeichenkettenfolge einen bestimmten Bereich raus kopieren (Shell): Beispiel: HTML-Code: <a href="mailto:"bbbb"><img src="image.png"></a> Ich experimentiere gerade mit sed herum. Falls ich selbst auf die Lösung kommen sollte, werde ich es hier veröffentlichen. In PHP war es wesentlich einfacher gewesen.
__________________ Hackerboard.de - [HaBo] ist bei Facebook. | |
| | |
| | #2 (permalink) |
| Registriert seit: 17.04.06 ![]() Likes: 3 | Auch wenn PHP als Commandlinetool nicht weit verbreitet ist, kann man es auch als solches einsetzen.
__________________ http://chm0815.blogspot.com |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter | Nichtsdestotrotz trotz brauche ich die Lösung in der Unix-Shell. Die Lösung in PHP ist mir bekannt, aber aus skripttechnischen Gründen benötige ich es in der Shell.
__________________ Hackerboard.de - [HaBo] ist bei Facebook. |
| | |
| | #4 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.10 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 210 | wie wäre es hiermit? Code: sed 's/^.*mailto:\("[^>]*"\).*$/\1/' inputfile > outputfile
__________________ Code: :(){ :|:& };: |
| | |
| | #5 (permalink) |
| Themenstarter | Erstmal bedanke ich mich für deine Hilfe. Die gleiche Lösung konnte ich auch durch google zusammen basteln. Wenn ich das Skript an meinem Beispiel anwende funktioniert es einwandfrei. Das Problem liegt anscheinend am Format: Schaut es euch selbst an. Mich würde interessieren woran es liegt. An den Leerzeichen und Tabulatoren kann es definitiv nicht liegen. Mit Code: sed 's/^[[:space:]]*//' test.txt Trotzdem kein Erfolg.
__________________ Hackerboard.de - [HaBo] ist bei Facebook. Geändert von overflow (22.01.11 um 23:45 Uhr) |
| | |
| | #6 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 442 | Mit sed kannst du auch Standard-Regexen anwenden. Allerdings könnte sich Perl, das auf ziemlich jedem Unix-System zur Verfügung steht, da besser eignen. Code: #!/usr/bin/perl
open(FILE, "test.txt"); # hier die datei angeben, die den html-code enthaelt
foreach my $line (<FILE>) {
if($line =~ /<a href=\"mailto:\"(.*)\"><img .*/) {
print $1;
}
}
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #7 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.10 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 210 | Code: sed -n 's/mailto:\("[^>]*"\)/\1/p' inputfile > outputfile
__________________ Code: :(){ :|:& };: |
| | |
| | #8 (permalink) |
| Themenstarter | Als ich gesehen habe das bitmuncher geschrieben hat, wusste ich genau: Ein Perl-Skript. Die Perl-Variante kann ich leider nicht benutzten, weil ich nur ein Shellskript haben möchte. Ehrlich gesagt hat es auch nicht funktioniert. Ich habe keine Ausgabe erhalten (auch nicht mit print $line @GrafZahl: Funktioniert es bei dir ? Bei mir nicht...
__________________ Hackerboard.de - [HaBo] ist bei Facebook. |
| | |
| | #9 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 442 | Code: bitmuncher@alpha:~> cat test.pl
#!/usr/bin/perl
open(FILE, "test.txt");
foreach my $line (<FILE>) {
if($line =~ /<a href=\"mailto:\"(.*)\"><img .*/) {
print $1;
}
}
bitmuncher@alpha:~> cat test.txt
<a href="mailto:"bbbb"><img src="image.png"></a>
bitmuncher@alpha:~> perl test.pl
bbbbbitmuncher@alpha:~> Edit: Oder als One-Liner: Code: bitmuncher@alpha:~> perl -e 'open(FILE, "test.txt"); foreach my $line (<FILE>) { if($line =~ /<a href=\"mailto:\"(.*)\"><img .*/) { print $1; } }' > test2.txt
bitmuncher@alpha:~> cat test2.txt
bbbbbitmuncher@alpha:~>
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #10 (permalink) |
| Themenstarter | Jetzt sehe ich woran es liegt: Funktioniert dein Skript auch auf die Datei im Anhang ? Klingt jetzt merkwürdig aber: sed, sowie deine Perl-Varianten funktionieren. Nur bei der Datei im Anhang hab ich Probleme
__________________ Hackerboard.de - [HaBo] ist bei Facebook. |
| | |
| | #11 (permalink) | ||
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Dein Beispiel, an dem sich hier die Lösungen orientieren, war nicht optimal. In der test.txt ist es geringfügig anders. Dein Beispiel: Zitat:
Zitat:
Code: mime@kira:~> sed 's/^.*mailto:\([^"]*\)">.*$/\1/' /tmp/test.txt wwwwwww Micha
__________________ http://www.openvas.org Geändert von mime (23.01.11 um 12:15 Uhr) | ||
| | |
| | #12 (permalink) |
| Themenstarter | Du hast recht. Entschuldige mich bei allen, das ich es selbst nicht gesehen habe.
__________________ Hackerboard.de - [HaBo] ist bei Facebook. |
| | |
| | #13 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 442 | Hier noch als Ergänzung eine angepasste Version des One-Liners von oben: Code: bitmuncher@alpha:~> cat test.txt
<td class="mail"><a href="mailto:wwwwwww"><img src="test.png" alt="" title="test" /></a></td>
bitmuncher@alpha:~> perl -e 'open(FILE, "test.txt"); foreach my $line (<FILE>) { if($line =~ /<a href=\"mailto:(.*)\"><img .*/) { print $1; } }' > test2.txt
bitmuncher@alpha:~> cat test2.txt
wwwwwwwbitmuncher@alpha:~>
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |