Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 12.01.2010, 12:20   #1
Newbie
 
Offline
Registriert seit: 01-2010
Beiträge: 15
Letzte Zeile einer Textdatei auslesen...

Hallo,

ein schönes Forum habt ihr hier

Ich habe ein Problem und zwar möchte ich aus einer textdatei (endung .log) nur die letzte Zeile auslesen und in dieser Zeile nach einem Wort suchen (z.B. quit).

Wie kann ich das anstellen?

Gruß Nils
    Mit Zitat antworten
Alt 12.01.2010, 12:27   #2
Expert Member
 
Benutzerbild von NilsK
 
Offline
Registriert seit: 06-2008
Ort: Hannover
Beiträge: 7.376
Moin,

etwas mehr Informationen benötigen wir schon: Was ist das Ziel des Ganzen? Von welcher Scripting-Sprache/-Umgebung reden wir? Geht es um eine neue Lösung oder willst du etwas Bestehendes erweitern? Geht es um eine einmalige oder eine wiederhiolte Aufgabe? Welchen Umfang hat die Logdatei? usw. usf.

Gruß, Nils

Signatur
Nils Kaczenski

MVP Directory Services: Architecture
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!

    Mit Zitat antworten
Alt 12.01.2010, 12:41   #3
Newbie
 
Offline
Registriert seit: 01-2010
Beiträge: 15
Okay, das habe ich vergessen

Also es geht um die Windows PowerShell.

Die Log file kann mehr als 80.000 Zeilen haben, je nach dem wann der Fehler auftritt.

Im Moment Prüfe ich immer ob der Service Status auf Running steht und wenn nicht starte ich ihn.

Manchmal passiert es aber, das der Service auf Running steht, aber durch ein Fehler der Service nicht mehr richtig arbeitet, in dem Fall taucht in einer Zeile ein quit auf. Danach passiert dann ncihts mehr in der log.

Und in dem Fall möchte ich den service halt neustarten.

Gruß Nils

EDIT: Das einzige was mir so einviel, war mit folgendem Code die Zeilen zu zählen... aber das dauert eigentlich etwas zu lange... desshalb habe ich den ansatz nicht weiter verfolgt.

Code:
function getZeile ($zeile) {
  $datei = Get-content "C:\Program Files\Service1\service.log"
  $a = 0
  $datei | Foreach-Object { $a++}
  
  return $a
}
    Mit Zitat antworten
Alt 13.01.2010, 13:15   #4
Newbie
 
Offline
Registriert seit: 01-2010
Beiträge: 15
kann mir keiner helfen?

Gruß Nils
    Mit Zitat antworten
Alt 13.01.2010, 13:32   #5
Expert Member
 
Benutzerbild von phoenixcp
 
Offline
Registriert seit: 02-2004
Ort: Radebeul
Beiträge: 5.470
Lass den Leuten mal ein wenig Zeit. Drängeln hat noch keinem geholfen und man macht sich auch nicht unbedingt beliebt damit.

Signatur
MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB

    Mit Zitat antworten
Alt 13.01.2010, 13:38   #6
Expert Member
 
Benutzerbild von NilsK
 
Offline
Registriert seit: 06-2008
Ort: Hannover
Beiträge: 7.376
Moin,

ich habe keine vollständige Lösung, nur den Tipp es mal mit dem Log Parser zu versuchen. Der kann einige Dinge sehr effizient.

Kostenloser Download bei Microsoft.

Gruß, Nils

Signatur
Nils Kaczenski

MVP Directory Services: Architecture
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!

    Mit Zitat antworten
Alt 13.01.2010, 13:43   #7
Newbie
 
Offline
Registriert seit: 01-2010
Beiträge: 15
Schade, aber vielleicht ja jemand anders...

Den LogParser schaue ich mir mal an

Danke

EDIT: Habe die Lösung gefunden, um nur die letzte Zeile auszulesen (überspringt leere Zeilen):

Get-Content c:\scripts\test.log | Select-Object -last 1

Geändert von BNils (13.01.2010 um 14:01 Uhr).
    Mit Zitat antworten
Alt 13.01.2010, 14:05   #8
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
Code:
if ((Get-Content file.log | Select-Object -Last 1) -match "quit"){
#Your Code here
}
Oder

Code:
...
(get-Content file.log)[(get-Content file.log).count-1]
...
    Mit Zitat antworten
Alt 13.01.2010, 14:07   #9
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
Off-Topic:

Zitat von BNils Beitrag anzeigen
[...]
EDIT: Das einzige was mir so einviel, war mit folgendem Code die Zeilen zu zählen... aber das dauert eigentlich etwas zu lange... desshalb habe ich den ansatz nicht weiter verfolgt.

Code:
function getZeile ($zeile) {
  $datei = Get-content "C:\Program Files\Service1\service.log"
  $a = 0
  $datei | Foreach-Object { $a++}
  
  return $a
}
Zur Info:
Das Zeilen zählen geht schneller:

Code:
function getZeile(){
  return (Get-content "C:\Program Files\Service1\service.log").count-1
}
    Mit Zitat antworten
Alt 13.01.2010, 14:39   #10
Newbie
 
Offline
Registriert seit: 01-2010
Beiträge: 15
Zitat von Dukel Beitrag anzeigen
Code:
if ((Get-Content file.log | Select-Object -Last 1) -match "quit"){
#Your Code here
}
Das ist super, dann habe ich eine Pipe weniger

Danke @Dukel

EDIT: Kann es sein, das er mit -last trotzdem vorne anfängt und jede Zeile durchläft bis er bei der letzten ist? Kann man das anders machen, weil es dauert bei meiner log (80.000 Zeilen) lange bis er bei der letzten Zeile ist!

Geändert von BNils (13.01.2010 um 15:02 Uhr).
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zeile aus einer Datei auslesen und in TXT-Datei wegschreiben Fragment Windows Forum — Scripting 10 29.01.2008 15:19
Eine Zeile aus einer Textdatei als Umgebungsvariable Itchy Windows Forum — Allgemein 5 14.04.2006 16:25
ersten drei Buchstaben einer Textdatei auslesen rara Windows Forum — Allgemein 4 23.12.2005 15:40
Einzelne Eintraege einer Zeile auslesen varnik Windows Forum — Allgemein 14 14.02.2005 17:41
Select die letzte Zeile? Martin Lembcke MS SQL Server Forum 3 13.05.2004 10:14


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:15 Uhr. Seite generiert in 0,040 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang