bituniverse.com Foren-Übersicht bituniverse.com
Entwickler Forum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mal kein PHP

 
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Linux, Windows, Apache, IIS
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gast






BeitragVerfasst am: Di 17 Feb, 2009 11:12    Titel: Mal kein PHP Antworten mit Zitat

Mal eine Frage, die so gar nichts mit PHP zu tun hat:

Ich habe eine Textdatei - geneuer gesagt eine Logdatei - und möchte hieraus per Shellscript einige Informationen herausfiltern. Das wäre soweit auch kein Problem, wenn nicht zusammengehörige Informationen in verschiedenen Zeilen stehen würden.
Ich habe also Information 1 und Information 2. Information 1 kann sowohl alleine auftauchen, als auch zusammen mit Information 2. Wenn letzteres der Fall ist, dann steht Information 2 einige Zeilen unter Information 1.

Ich habe mir nun gedacht, ich entferne alle Zeilenumbrüche aus der Datei und bastel dann einen Regex, der das erledigt. Leider ist sed aber immer greedy, wodurch ich mit meinem Regex nur ein einzelnes Vorkommen der Informationen finde. Da aber ja alles in einer Zeile steht, funktioniert auch /g nicht Confused

Code:
  1. sed ':;s/\n/ /;N;T' mein.log | sed -n 's/.*Blablubb \(Information 1\) \).*\(Information 2\)/\1;\2/pg' > auswertung.csv

Jemand eine Idee ?

Nach oben
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Di 17 Feb, 2009 11:16    Titel: Antworten mit Zitat

Ich wars Embarassed

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 283
Wohnort: Aachen

BeitragVerfasst am: Di 17 Feb, 2009 16:01    Titel: Antworten mit Zitat

Sind Information 1 und 2 jeweils feststehende Ausdrücke, oder wie darf man das verstehen?

Im Zweifel kannst du aber auch einfach ein Tcl/Perl/Python/Php/Sh-Script erstellen, was dir wirklich die Datei zeilenweise interpretiert.

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: Di 17 Feb, 2009 16:11    Titel: Antworten mit Zitat

Ja, das sind Logeinträge, in denen dann irgendwo innerhalb der Zeile einmal value=Wert steht. Mich interessiert nun zu zwei bestimmten values der geloggte Wert. Diese treten aber in verschiedenen Zeilen auf und lassen sich nur insofern verbinden, als dass Information entweder alleine steht oder einige Zeilen darunter dann Information 2 folgt.

Code:
  1. Feb 17 09:16:17 : blablub
  2. Feb 17 09:16:18 : blablub
  3. Feb 17 09:16:19 : Information 1 value = wert
  4. Feb 17 09:16:20 : blablub
  5. Feb 17 09:16:21 : blablub
  6. Feb 17 09:16:22 : blablub
  7. Feb 17 09:16:23 : Information 1 value = wert
  8. Feb 17 09:16:24 : blablub
  9. Feb 17 09:16:25 : blablub
  10. Feb 17 09:16:26 : Information 2 value = wert
  11. Feb 17 09:16:27 : blablub
  12. Feb 17 09:16:28 : blablub
  13. Feb 17 09:16:29 : Information 1 value = wert
  14. Feb 17 09:16:30 : blablub
  15. Feb 17 09:16:41 : blablub
  16. Feb 17 09:16:42 : blablub
  17. Feb 17 09:16:43 : Information 1 value = wert
  18. Feb 17 09:16:44 : blablub
  19. Feb 17 09:16:45 : blablub
  20. Feb 17 09:16:46 : Information 2 value = wert

Das ganze muss auf einem minimal Debian System laufen, also php, perl, etc. scheiden als Lösungsweg aus.

Nach oben
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 283
Wohnort: Aachen

BeitragVerfasst am: Di 17 Feb, 2009 16:50    Titel: Antworten mit Zitat

Also ich hab mal kurz das sed mit awk zusammengefrickelt, aber das geht auch mit awk selbst. Schön ist das ganze eh nicht. Very Happy

awk-script:
Code:
  1. BEGIN {
  2.   FS=";"
  3.   value1=""
  4. }
  5. /^1.*/ {
  6.   value1=$2
  7. }
  8. /^2.*/ {
  9.   print value1, $2
  10. }

aufrufen mit:
sed -n 's/^.*Information \([12]\) value = \(.*\)/\1;\2/p' mein.log|awk -f awk-script

Ergibt bei mein.log:
Code:
  1. Feb 17 09:16:17 : blablub
  2. Feb 17 09:16:18 : blablub
  3. Feb 17 09:16:19 : Information 1 value = wertv11
  4. Feb 17 09:16:20 : blablub
  5. Feb 17 09:16:21 : blablub
  6. Feb 17 09:16:22 : blablub
  7. Feb 17 09:16:23 : Information 1 value = wertv12
  8. Feb 17 09:16:24 : blablub
  9. Feb 17 09:16:25 : blablub
  10. Feb 17 09:16:26 : Information 2 value = wertv21
  11. Feb 17 09:16:27 : blablub
  12. Feb 17 09:16:28 : blablub
  13. Feb 17 09:16:29 : Information 1 value = wertv13
  14. Feb 17 09:16:30 : blablub
  15. Feb 17 09:16:41 : blablub
  16. Feb 17 09:16:42 : blablub
  17. Feb 17 09:16:43 : Information 1 value = wertv14
  18. Feb 17 09:16:44 : blablub
  19. Feb 17 09:16:45 : blablub
  20. Feb 17 09:16:46 : Information 2 value = wertv22

folgende Ausgabe:
Code:
  1. wertv12 wertv21
  2. wertv14 wertv22

Reicht das als Ansatz? Sei dir aber bitte bewusst, dass es bei großen Dateien lange dauern/viel Auslastung erzeugen kann.

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Di 17 Feb, 2009 22:46    Titel: Antworten mit Zitat

Ja, das sieht schonmal sehr gut aus Smile
Problem ist nur, dass Information 1 und Information 2 nur Platzhalter sein sollten, in Wirklichkeit stehen da ganz andere Werte, sodass ich das nicht so auf deine Art lösen kann :/

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 283
Wohnort: Aachen

BeitragVerfasst am: Mi 18 Feb, 2009 02:27    Titel: Antworten mit Zitat

Daher meine Frage Wink

Zitat:
Sind Information 1 und 2 jeweils feststehende Ausdrücke, oder wie darf man das verstehen?

Aber irgendwie wirst du das bestimmt so mit den RegEchsen hinbekommen, das Prinzip klappt ja so schon mal. Very Happy

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Mi 18 Feb, 2009 11:49    Titel: Antworten mit Zitat

So, zwar drei Tage für den Mist gebraucht, aber es läuft nun - soagr ohne sed. Hätte mir mal früher awk anschauen sollen Laughing

Danke für deine Hilfe!

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Linux, Windows, Apache, IIS Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB2.de
Powered by WebRing.