The UNIX and Linux Forums  

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Wie Zusammenfügen aufeinander folgenden Zeilen shivi707 UNIX-Desktop für Dummies Fragen & Antworten 1 01-12-2009 09:08 AM
zu verketten zwei Zeilen, wenn die Linie doesnt Ende mit Zitaten laxmi131 UNIX für Fortgeschrittene und Experten 9 10-27-2008 07:22 AM
Zusammenfügen und-Display 2 Zeilen als 1 mit einer Voraussetzung für die 2 Zeilen? vithala Shell Programmierung und Scripting 7 07-11-2008 02:01 AM
Brauchen Lösung Zusammenfügen und Display 2 Zeilen als 1 mit einer Voraussetzung für die 2 Zeilen? vithala UNIX für Fortgeschrittene und Experten 1 07-10-2008 02:27 PM
Extrahieren von Logfile-Einträge harpdl Shell Programmierung und Scripting 2 07-13-2006 02:40 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 03-17-2009
BecTech BecTech is offline
Registrierte Nutzer
  
 

Join Date: März 2009
Beiträge: 2
Logfile - Gewinnung bestimmter Linien Zusammenfügen in 1 Zeile

Ich habe eine Log-Datei von der automatischen Diagnose läuft. Die Log-Datei angehängt, um jedes Mal eine automatische Protokoll wird.
Ich möchte nur einige Linien ziehen aus jedem Lauf in der Log-Datei, und zu verketten in 1 Komma getrennt Zeile (für den Export in Excel oder einer HTML-Tabelle).

Jede Diagnose-Lauf wird in Klammern mit einem Kommentar beginnen und enden, so kann ich die Gruppe, dass die Art und Weise, aber ich bin mit Mühe, alles in 1 Zeile.

Typische Daten:

Diags beginnen.
Dienstag 17 März 18:07:34 CEST 2009

PASS: (123) Power Check
.
.
[mehr Daten]
Diags Ende.
Diags beginnen.
Dienstag 17 März 19:09:22 CEST 2009

FAIL: (123) Power Check
.
Beschreibung: Voltage Clamp
.
. [mehr Daten nicht details]
.
Diags Ende.


Ich möchte, dass die Zeitstempel-, Test-Ergebnis (für den 123-Test)


Ich konnte awk zu verwenden, um eine enge, aber ich kann nicht recht bekommen.

awk '/ Diags begin / (getline; print); (if ($ 2 \u003d\u003d "(123)") print $ 1, $ 2, $ 3, $ 4)'

Dies gibt mir:

Mon Mar 16 11:37:07 CEST 2009
PASS: (123) Power Check
Mon Mar 16 12:31:10 CEST 2009
PASS: (123) Power Check
Tue Mar 17 01:30:54 CEST 2009
** FAIL: (123) Power Check
Tue Mar 17 03:08:16 CEST 2009
PASS: (123) Power Check



Ich bin versucht, ist:
Mon Mar 16 11:37:07 CEST 2009, PASS: (123) Power Check
Mon Mar 16 12:31:10 CEST 2009, PASS: (123) Power Check
Tue Mar 17 01:30:54 CEST 2009, ** FAIL: (123) Power Check
Tue Mar 17 03:08:16 CEST 2009, PASS: (123) Power Check


Auch ich bin auf der Suche nach einer Möglichkeit, nur ziehen Sie die Informationen für einen bestimmten Zeitraum (zum Beispiel das aktuelle Datum - 7 Tage), aber ich Angst, dass später .. Baby-Schritte ...

Das System ist Unix (HP-UX), so awk, perlOder sed sind die Optionen.

Vielen Dank für jede Hilfe ..

Paul
  #2 (permalink)  
Old 03-17-2009
daptal daptal is offline
Registrierte Nutzer
  
 

Join Date: März 2009
Beiträge: 68
#! / usr / bin /perl -w

use strict;

open (FH, "txt");
my $ fb \u003d 0;
my @ str;
while (my $ line \u003d <FH>) (
chomp ($ line);
if ($ line \u003d ~ m / Diags begin /) (
$ fb \u003d 1;
)
if ($ fb & &! ($ line \u003d ~ m / Diags begin / | | $ line \u003d ~ m / Diags Ende /)) (
Push @ str, $ line;
)
if ($ line \u003d ~ m / Diags Ende /) (
my $ x \u003d join "", @ str;
print "$ x \ n";
@ str \u003d ();
$ fb \u003d 0;
)
)

Versuchen Sie, diese

Prost

Zuletzt bearbeitet von daptal; am 03-17-2009 11:36 PM.. Grund: output
  #3 (permalink)  
Old 03-18-2009
PMM pmm is offline
Registrierte Nutzer
  
 

Join Date: Dezember 2008
Beiträge: 50
Im Anschluss an Ihre awk-Script - Verwendung printf:


Code:
awk '/Diags begin/{getline;printf};{if ($2=="(123)") print ","$1,$2,$3,$4}'

  #4 (permalink)  
Old 03-30-2009
BecTech BecTech is offline
Registrierte Nutzer
  
 

Join Date: März 2009
Beiträge: 2
ok, danke für die guten Ideen .. nach einigem Hacken und Erprobung ich endlich die Ausgabe in ein praktikables Format mit awk.

Ich habe die Ergebnisse ausgegeben, um eine ASCII-Datei in ein Komma getrenntes Format ..
Meine Ausgabe-Datei wird tstres.txt
und typische Zeilen in der Datei sieht wie folgt aus:

TSTR01, Mar 29 21:29:17 CEST 2009, PASS:, Power Check
TSTR01, Mar 30 00:54:55 CEST 2009, PASS:, Power Check
TSTR01, Mar 30 08:31:31 CEST 2009, ** FAIL:, Power Check
TSTR02, Mar 07 14:41:08 CEST 2009, PASS:, Power Check
TSTR02, Mar 07 21:46:33 CEST 2009, PASS:, Power Check

Was ist der einfachste Weg, diese Datei und die Ausgabe, die es zu einer HTML-Tabelle?

Mein Plan ist es, das Skript in einem cron-Job und alles, was ich dann tun müssen, ist die HTML-Seite.
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 04:42 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0