Regular Expression - verschiedene Ausdrücke testen (grep | )

Status
Nicht offen für weitere Antworten.
M

mp83

Mitglied
Hallo,

folgendes Problem:
Ich möchte aus einer sehr großen ASCII file Zeilen auslesen.
Ich habe die zunaechst mittels grep (bzw. egrep) und pipe (|) gemacht. Dabei sind mache Ausdruecke
zu finden (grep -i .....) andere wiederrum nicht (grep -v ...)

Jetzt moechte ich aber die Ergebnisse, also gefunde Zeile weiter verwenden. daher ist der Ansatz mir grep zwar mgl.
aber sehr unperformant, bzw. mit unnoetigem Aufwand verbunden.

Deshalb meine Frage:
Wie kann ich den | Operator in Java nutzen.

Bsp.

grep -i TEST file | grep -v XXX

Wie kann ich denn hier einen Ansatz waehlen?


mfg manne
 
foobar

foobar

Top Contributor
Wie kann ich den | Operator in Java nutzen.
Willst du die Ausgabe von grep an ein Java Programm weiterleiten oder was ist das Problem?
Code:
grep -i FOO bar | java MyClass > out
 
G

Guest

Gast
Ja, die File in der ich suche beinhaltet Strings, die zur weiteren Verarbeitung
herausgefiltert werden müssen.
Da ich diese im Moment per grep auslese, und anschießend mit einem etwas dreckigem
Hack wieder per FileReader einlese, würde ich gern eine AllInOne Lösung haben.
 
foobar

foobar

Top Contributor
Warum öffnest du die Datei nicht aus dem JavaProgramm heraus und extrahierst die relevanten Zeilen?
Ich verstehen das Problem nicht ganz.
 
M

mp83

Mitglied
Das Problem ist, dass die File ca. 130MB groß ist. (1,7 mio. zeilen!)
Ich kann die relevanten Strings nicht mittels einer regular expresion finden.
Deshalb auch die Pipe.

Die Strings liegen zeilenweise vor, also ich kann bei einem match die komplette zeile extrahieren.

Das Probem ist aber, dass ich nach ca. 1000 verschiedenen Strings suchen muss.

D.h.

bei einem normalen grep würde das 1000 x ein grep benötigen. und 1000 mal ne 130 mb file oeffnen
ist uncool ;-(

Also ich will:

ein mal die file öffenen, anschließend entweder zeilenweiße nach matches suchen (deßhalb die pipe... da ich ca. 3 regex brauche, um einen definitiven treffer zu landen)

d.h. pro zeile nach 1000 matches suchen macht 1000x1,7 mio .. nicht wirklich performant

(aber das ist ja dann eine implementierung sachen - denn np vollständig ist das problem ja nun nicht ;-) )

nun aber noch mal zum proggi ablauf:

ich habe namen, anhand dieser baue ich mir regular expressions auf (das geschieht schon mit einem javaproramm)
die namen weisen auch übereinstimmungen auf, die die ausnutzen kann um matches zu finden.

ich benutzen sozusagen als 1. ein java proggi, was mit anhand der namen (das sind bezeichnungen für register)
ein shell script baut. das wird dann ausgeführt. es werden so viele files kreiert, wie ich namen habe.
dann kommt wieder das javaproggi zum einsatz, was mittel regex die filenamen aus der directory ausliest und mit den namen vergleicht, match eins, wird die file geöffnet und der string extrahiert.

klar?

ich will aber nicht mehr den umweg über das shell script gehen, (war zu debugzwecken ganz gut) will deshalb alles im javaproggi machen.
nur hab ich das problem, dass ich die pipe nicht habe, muss ich deshalb jetzt ein set nehmen und dies immer kleiner werden lassen?

mfg manne
 
B

bygones

Gast
mhm - weiß net ob ich das richtig verstanden habe

schreib ein java programm, dass dir zeilenweise die datei ausliest per regex die Zeilen matcht und wenn ein Match gefunden wird speicherst du dir die Zeile (oder die relevante Gruppe des matches)...

alles andere (über shell) halte ich für unsinnig
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Regular Expression Allgemeine Java-Themen 16
H Regular Expression Allgemeine Java-Themen 11
M Regular expression Allgemeine Java-Themen 5
B Regular Expression und Matcher Allgemeine Java-Themen 3
MrMilti Gruppenreferenz in einer Regular Expression Allgemeine Java-Themen 3
S Java Regular Expression Allgemeine Java-Themen 2
G Parameterauswertung mit regular Expression Allgemeine Java-Themen 3
M Java Regular Expression für Mathe-String (= 2+4*3+2) Allgemeine Java-Themen 7
G Regular Expression Allgemeine Java-Themen 8
D Regular Expression Mit Punkt und Zahl Allgemeine Java-Themen 4
T Regular Expression mit n Gruppen Allgemeine Java-Themen 6
M Regular Expression Allgemeine Java-Themen 2
R Regular expression für '.' Allgemeine Java-Themen 7
H Regular Expressions: beste Methode? Allgemeine Java-Themen 5
S Java Regular Expressions Allgemeine Java-Themen 2
S Regular Expressions in Java Allgemeine Java-Themen 3
MQue Regular Expr Allgemeine Java-Themen 15
G Regular expressions Allgemeine Java-Themen 4
M Mal wieder . Regular Expressions Allgemeine Java-Themen 2
RalleYTN Expression Crawling Allgemeine Java-Themen 5
D Variablen C Expression Validator Allgemeine Java-Themen 7
J Expression Language für mathematische Ausdrücke Allgemeine Java-Themen 8
S Syntax Error, insert "AssignmentOperator Expression&amp Allgemeine Java-Themen 3
M verschiedene Dokumente auslesen Allgemeine Java-Themen 1
M Logging mit log4j2 in verschiedene Dateien? Allgemeine Java-Themen 22
J Verschiedene Runtime Versionen gleichzeitig? Allgemeine Java-Themen 12
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
K Verschiedene Sprachen Allgemeine Java-Themen 1
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
M Verschiedene Pilzartenerkennung Allgemeine Java-Themen 0
I Verschiedene Arrays auslesen Allgemeine Java-Themen 6
nrg Verschiedene JREs im Browser konfigurieren Allgemeine Java-Themen 6
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
G DesignPattern Verschiedene Services Allgemeine Java-Themen 4
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
M massenhaft verschiedene Date-Pattern Allgemeine Java-Themen 3
R Eclipse Verschiedene Ergebnisse bei Berechnung eines double-Werts Allgemeine Java-Themen 5
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
faetzminator verschiedene Beans, verschiedene Felder "koppeln" Allgemeine Java-Themen 3
J Verschiedene Klassen als "Object" in ArrayList und dann in for-Schleife erzeugen!? Allgemeine Java-Themen 2
S Welche Datenstruktur für verschiedene Sprachen sinnvoll? Allgemeine Java-Themen 2
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
M verschiedene Methonden innerhalb des gleichen Threads Allgemeine Java-Themen 7
N verschiedene Klasse laden (Designfrage) Allgemeine Java-Themen 2
S Package in verschiedene Projekten einbinden? Allgemeine Java-Themen 3
D Verschiedene Datein aus einer Zip Datei ins Programm laden Allgemeine Java-Themen 4
D Verschiedene Persistenz Strategien Allgemeine Java-Themen 7
S Konstruktoren, verschiedene Klassen, Methoden. Allgemeine Java-Themen 3
M Verschiedene Modi bei AbstractTableModel Allgemeine Java-Themen 10
J Verschiedene Klassen, verschiedene Ströme? Allgemeine Java-Themen 6
V 1 Methode für viele verschiedene Klassen? Allgemeine Java-Themen 9
L Verschiedene Versionen eines Interfaces Allgemeine Java-Themen 12
J Verschiedene Starteinstellungen Allgemeine Java-Themen 7
J Programm für verschiedene Betriebssystem vertreiben? Allgemeine Java-Themen 10
M 2 verschiedene LookAndFeels in einem Fenster möglich? Allgemeine Java-Themen 6
D Gehts praktischer? Thema:Verschiedene Instanzen einer Klasse Allgemeine Java-Themen 3
C Verschiedene JDKs Allgemeine Java-Themen 6
C verschiedene Klassenarten Allgemeine Java-Themen 3
G Verschiedene Auflösungen Allgemeine Java-Themen 6
H verschiedene Java Versionen Allgemeine Java-Themen 3
A Textfeld soll verschiedene Datumseingaben akzeptieren Allgemeine Java-Themen 5

Ähnliche Java Themen

Anzeige

Neue Themen


Oben