mit grep nach mehreren ausdruck suchen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Baysa
Beiträge: 36
Registriert: 31.01.2008 10:12:17

mit grep nach mehreren ausdruck suchen

Beitrag von Baysa » 17.10.2018 13:13:00

Hallo,

mein Problem ist:

ich habe eine text Datei

Code: Alles auswählen

CPLEX 12.7.1.0: timelimit = 3600
bestbound
CPXPARAM_Simplex_Display                         0
CPXPARAM_TimeLimit                               3600
CPXPARAM_MIP_Display                             0
CPXPARAM_MIP_Pool_Capacity                       0
CPXPARAM_Barrier_Display                         0
CPLEX 12.7.1.0: optimal integer solution; objective 20
290 MIP simplex iterations
0 branch-and-bound nodes
No basis.

suffix bestbound OUT;
_total_solve_elapsed_time = 0.036878
Z = 20
Z.bestbound = 20
und möchte nach Zeilen suchen wo mit Z = 20 und _total_solve_elapsed_time

Code: Alles auswählen

egrep  'Z | _total_solve_elapsed_time' log.txt
hiermit bekomme ich nur Z = 20, wenn ich so eingebe bekome ich beiden Zeile

Code: Alles auswählen

egrep  'Z | *_total_solve_elapsed_time' log.txt
kann mir jemand das erklären?
das hat auch nichts gezeigt

Code: Alles auswählen

grep  'Z \| \_total\_solve\_elapsed\_time' log.txt

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: mit grep nach mehreren ausdruck suchen

Beitrag von eggy » 17.10.2018 13:35:35

Nimm mal die Leerzeichen vor und nach der Pipe weg.
Dass es bei dem Z geklappt hat, liegt daran, dass da "Z =" und nicht "Z=" steht.

Edit: Und " *" steht für "beliebig viele (auch garkeine) Leerzeichen".

Baysa
Beiträge: 36
Registriert: 31.01.2008 10:12:17

Re: mit grep nach mehreren ausdruck suchen

Beitrag von Baysa » 17.10.2018 13:52:53

Danke :facepalm:

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: mit grep nach mehreren ausdruck suchen

Beitrag von hikaru » 17.10.2018 14:29:11

Deine Lösung ist zu unpräzise für deine Aufgabenstellung und die Aufgabenstellung selbst möglicherweise auch.

Zur Erinnerung nochmal die Aufgabenstellung:
Baysa hat geschrieben: ↑ zum Beitrag ↑
17.10.2018 13:13:00
und möchte nach Zeilen suchen wo mit Z = 20 und _total_solve_elapsed_time
Deine Lösung sieht jetzt vermutlich so aus:

Code: Alles auswählen

grep 'Z\|_total_solve_elapsed_time' log.txt
Das matcht aber z.B. auch auf: "Z = 30"

Ich weiß außerdem nicht, ob die Formulierung deiner Aufgabenstellung deinem lokalen Dialekt entspricht, aber sie liest sich für mich so, als könnte da am Ende noch das Wort "beginnen" fehlen. Falls ja, dann solltest du noch sicherstellen, dass dein Pattern nur gefunden wird, wenn es wirklich am Anfang der Zeile steht:

Code: Alles auswählen

grep '^Z = 20\|^_total_solve_elapsed_time' log.txt
Zuletzt geändert von hikaru am 17.10.2018 14:53:48, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: mit grep nach mehreren ausdruck suchen

Beitrag von Meillo » 17.10.2018 14:51:04

Btw: Portabel wird die Alternation (`|') nur von egrep(1) unterstuetzt. Zudem sind die EREs von egrep(1) einfacher zu benutzen.
Use ed once in a while!

Antworten