Suchen und Ersetzen mit RegEx

Hallo Allerseits,

ich muß aus sehr umfangreichen Textfiles ganz bestimmte Sequenzen herausschneiden und in einem neuen File einfügen. Dazu wollte ich UltraEdit nutzen und dort die UNIX-konformen Regular Expressions. Das Finden ist ziemlich easy (bis auf das Minus, das mal vorkommt mal nicht s. u.). Da ich aber in der gefundenen Zeile nur das Gesuchte benötige und nicht die Zeile an sich komme ich nicht weiter. Leider fand ich im Internet keine Anleitung/Doku, die mein Problem behandelte. Einzig das Gefundene mit einem anderen Ausdruck zu ersetzen wird beschrieben.

Kann mir vielleicht jemand einen Tipp dazu geben?

Zur Verdeutlichung:

Text Text Text Text TextText (-)1.234(-)1.234 Text Text Text Text.

Jetzt will ich genau das herausschneiden, was hier nicht Text heißt. Das Minuszeichen steht in Klammer, da es mal vorkommt und mal nicht (vielleicht ein Tipp auch hierfür).
Dann das Gefundene in einem neuen File sammeln. Das geht mit UEdit easy, da ich die Fundstellen direkt in die Zwischenablage kopieren kann.

Danke im Voraus.

MfG

AL

Hallo

Zur Verdeutlichung:

Text Text Text Text TextText (-)1.234(-)1.234 Text
Text Text Text.

Häh?

Scheib doch bitte mal:

[konkreter Text vor dem Ersetzen]:

cjskhvkjd loiwdfjoweipf ilowejfoip

[konkretes Resultat nach dem gewünschten Ersetzen]:

Jetzt will ich genau das herausschneiden, was hier nicht Text
heißt. Das Minuszeichen steht in Klammer, da es mal vorkommt
und mal nicht (vielleicht ein Tipp auch hierfür).
Dann das Gefundene in einem neuen File sammeln. Das geht mit
UEdit easy, da ich die Fundstellen direkt in die
Zwischenablage kopieren kann.

Welches Ultraedit hast Du?

Grüße

CMБ

Hallo Semjon,

Beispielzeile:

20080806|16:53:12.633|0245|00000000|INFO |SignResult|GetProcessMsg(): Time Frame 1218034391.239 -> 1218034391.489 Ext.Token-Receive 1218034390.539 -0.7000.950|0|
(Das ist eine einzige Zeile).

Gewünschtes Resultat:

-0.7000.950

Wie gesagt, bei beiden Zahlen steht mal ein Minus mal nicht.
Ich habe das neuste UEdit - 14.10.0.1024 (bis dato die Testversion).

Die Beispielzeile oben kann aber sehr unterschiedlich ausfallen. Einzig das auszuschneidende Zahlenschema ist immer identisch.

Danke.

MfG

AL

Hallo

Beispielzeile:
20080806|16:53:12.633|0245|00000000|INFO
|SignResult|GetProcessMsg(): Time Frame 1218034391.239 ->
1218034391.489 Ext.Token-Receive 1218034390.539
-0.7000.950|0|
(Das ist eine einzige Zeile).

Gewünschtes Resultat:

-0.7000.950

Aha!

[Replace] => Find What:

^.+?\s(\-?[0-9.]+\-?[0-9.]+)\|.\*$

=> Replace with:

\1

„Options“

[]
[]
[x] Regular Expressions

==> [Advanced]

„Regular Expression Engine“

[x] Perl
[] Unix
[] Ultraedit

Grüße

CMБ

Hallo CME,

danke für die Lösung. Klappt prima. Bin noch am Üben, habe mir aber einige Literatur bestellt.

Kurze Zusatzfrage. In vielen Logfiles steht am Anfang der Zeile ein Timestamp. Manchmal laufen die Logs über Wochen. Ist es prinziepiell möglich diejenigen Zeilen herauszufiltern, die in einer bestimmten Datumspanne und in einer bestimmten Zeitspanne liegen?

Z. B. vom 31.08.2008 9:00 Uhr bis 02.09.2008 16:00 Uhr. Entsprechende Timestamps wären dann:

Anfangszeitpunkt: 1220166000
Endzeitpunkt: 1220367600

Gesucht: Alles dazwischen

Danke im Voraus.

MfG

Andreas Lange