Hallo,
ich würde gerne eine Zahlenfolge aus einer Textdatei extrahieren
d.h. „text text text 123 text text text“ und am ende will ich nur noch 123 haben.
Die Zahl ist aber nicht immer die gleiche also müsste der text gelöscht werden und nur die Zahlenfolge bleibt übrig, nur hab ich keine Ahnung wie ich das anstellen kann.
Und am besten wäre das wenn es per Batchdatei machbar wäre.
Hallo,
ich würde gerne eine Zahlenfolge aus einer Textdatei
extrahieren
d.h. „text text text 123 text text text“ und am ende will ich
nur noch 123 haben.
Die Zahl ist aber nicht immer die gleiche also müsste der text
gelöscht werden und nur die Zahlenfolge bleibt übrig, nur hab
ich keine Ahnung wie ich das anstellen kann.
Und am besten wäre das wenn es per Batchdatei machbar wäre.
verstehe ich nicht ganz, Du willst entweder
a) die Zahlenfolge 123 in der Textdatei „übrigbehalten“
oder
b) die Zahlenfolge 123 nur aus der Textdatei lesen
für a:
C:\\> perl -i.bak -lpe "s/\D+//g" datei.txt
=> jetzt steht nur noch „123“ in der Datei.
für b:
C:\\> perl -lpe "s/\D+//g" datei.txt
=> jetzt ist die Datei unverändert und „123“
steht auf dem Bildschirm.
Beide Zeilen kann man ganz normal in eine
Batch-Datei schreiben, sofern man Perl (http://downloads.activestate.com/ActivePerl/Windows/…)
installiert hat.
Grüße
CMБ
Wow super!
Vielen dank für die schnelel Hilfe.
Und noch die Frage kann man mit Perl auch ein Wort suchen was zwischen 2 Zeichen oder Wörtern Steht finden und in eine Datei speichern?
Also
blablablablabla>TEXT
Nun hab ich ganz google leer gesucht und leider immer noch nicht gefudnewas mir hilft.
Hallo
Nun hab ich ganz google leer gesucht und leider immer noch
nicht gefudnewas mir hilft.
Ich habe Dein Beispiel nicht verstanden.
Kannst Du mal 3 Fälle hinschreiben, wo
was gefunden werden soll - und 3 Fälle,
die so ähnlich aussehen, wo es nicht
gefunden werden soll?
Grüße
CMБ
Ausgangstext:
hier steht viel text DIESEN TEXT MÖCHTE ICH GERNE HABEN hier steht auch viel text
Den Text den ich gerne erhalten möchte:
DIESEN TEXT MÖCHTE ICH GERNE HABEN
Ich hofe ich hab es diesmal geschafft mich verständlich zu machen.
Falls nicht bitte nochmal nachfragen.
Hallo
Ausgangstext:
hier steht viel text DIESEN TEXT MÖCHTE ICH
GERNE HABEN hier steht auch viel text
OK
Den Text den ich gerne erhalten möchte:
DIESEN TEXT MÖCHTE ICH GERNE HABEN
Was bedeutet „MÖCHTE ICH GERNE HABEN“?
Wo möchtest Du was haben?
C:\\> perl -lne "print $1 if/ (.+?)/sg" daten.txt
> Ich hofe ich hab es diesmal geschafft mich verständlich zu
> machen. Falls nicht bitte nochmal nachfragen.
Was willst Du denn damit machen?
Grüße
CMБ
Hallo,
also das was du da freundlicher Weise gepostet hast das funktioniert leider nicht, da bekomemi ch folgende Fehlermeldung.
C:\>test.pl
String found where operator expected at C:\test.pl line 1, near „lne „print $1 if/ (.+?)/sg““
(Do you need to predeclare lne?)
syntax error at C:\test.pl line 1, near „\>“
Execution of C:\test.pl aborted due to compilation errors.
Also nun versuche ich es nochmal zu erklären, was genau ich haben möchte.
Voher aber nochmal danke für alles.
Also ich habe eine Datei in der viel Text drinnen steht es ist eine HTML-Datei, von der ich Text auslesen will und den Speichern möchte aber nur einen bestimmten Teil.
So nun nochmal zum aufbau der Datei.
blabla 1A2B3C
und nun möchte ich gerne das nur 1A2B3C in eine Datei geschreiben wird. Ist natürlich nur ein Beispiel da kann auch XYZ was weiß ich drinnen stehen.
Kann jmd. helfen?
Hallo batel wastel,
Vielleicht, aber erst solltest Du mal verraten, ob die Programmier/Skript-Sprache egal ist, oder soll es unbedingt Perl sein, wie es Semjon Michailowitsch schon so schön vorgemacht hat?
Und das ganze soll unter Windows laufen, nehme ich mal an?
Viele Grüße
Marvin
Hallo batel wastel,
also das was du da freundlicher Weise gepostet hast das
funktioniert leider nicht
Ich habe die Lösung von Semjon Michailowitsch mal ausprobiert, funktioniert wunderbar. Vielleicht hast Du dich nur irgendwo vertippt.
Hier nochmals seine Lösung, von mir nur leicht ausgebaut (aber das wesentliche hat Semjon Michailowitsch schon gebracht):
#!/usr/bin/perl
use strict;
my $file = @ARGV[0];
open (IN, ") {
if (/ (\w+)/g) { print $1, "\n"; }
}
Findet von zwei hintereinanderstehenden ID-Tags, etwa so
1A2B3C 1A2fdr
nur den ersten, und ID-Tags, die auf der nächsten Zeile weitergehen
mehr als eine Zeile
findet es noch gar nicht. Sonstige Sonderfälle habe ich noch nicht getestet, aber irgendwas muss ja auch noch für dich übrigbleiben :wink:
Viele Grüße
Marvin
Hallo,
wenn das ganze ich Perl geschreiben wäre, wär mir das schon sehr recht.
Und ja es sollte unter Windows laufen.
Hallo batel wastel,
meinen Artikel hier hast Du gelesen?
/t/zahlenfolge-auf-datei-extrahieren/5161226/11
Viele Grüße
Marvin
Scheinbar hatte ich wirklich einen Fehler drinnen.
Jedenfalls funktioniert es nun.
Wow vielen vielen Dank für eure Hilfe.