bankaifan
Goto Top

Textdatei ausgeben (die letzten 10 zeilen)

guten Morgen zusammen,

Ich suche n Möglichkeit, mit der ich so etwas machen kann wie mit

 
more

allerdings immer nur die letzten 10 zeilen ausgegeben werden.

vllt steh ich grad aufm schlauch, aber ich hab grad keine idee wie das gehen könnte

Danke schonmal für eure Beiträge.

Grüße

Bankaifan

Content-ID: 151604

Url: https://administrator.de/contentid/151604

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

refugee
refugee 23.09.2010 um 10:22:28 Uhr
Goto Top
hey
wie wärs mit tail?
mcmarc
mcmarc 23.09.2010 um 10:28:09 Uhr
Goto Top
Hallo face-smile

oder

- less -

Deine Beschreibung was genau Du machen willst, ist etwas mager face-smile

Gruss
bankaifan
bankaifan 23.09.2010 um 10:31:45 Uhr
Goto Top
tail?

less?

Kenn ich beides nicht :D

also ich hab ja nen Chat mit batchprogrammiert, zusammen cewiemaster

Naja und da wird der chatverlauf immer mit "more" eingelesen. aber wenn jetzt so die logdatei mal 200 zeilen groß ist muss man ja jedesmal bis nach unten drücken also mit enter. und naja. das hätte ich gerne so, dass immer nur die letzten 10 zeilen angezeigt werden.
mcmarc
mcmarc 23.09.2010 um 10:35:19 Uhr
Goto Top
aha ok face-smile dann wäre der befehl:

"tail -10" geeignet face-smile

also :D "tail -10 /root/logdatei" z.B. zeit dir die letzen 10 Zeilen in der Datei /root/logdatei anface-smile

Aber ich empfehle Dir die manpages mal durchzulesen, gibt tolle Sachen face-smile
http://linuxmanpages.com/man1/tail.1.php

oder in der console: "man tail" eingeben.

Gruss
refugee
refugee 23.09.2010 um 10:40:16 Uhr
Goto Top
tail gibt doch von Haus aus die letzten 10 Zeilen aus?

tail -n würde n Zeilen ausgeben, also wäre das -n in dem Fall überflüssig :D
mcmarc
mcmarc 23.09.2010 um 10:45:05 Uhr
Goto Top
ja face-smile richtig, ich wollte den syntax verständlich machen face-smile da bankaifan die Befehle noch nicht gehört hatte face-smile.. man weiß ja nie, vieleicht sollen es später doch 15 Zeilen sein face-smile.

hehe face-smile merci
bankaifan
bankaifan 23.09.2010 um 10:48:25 Uhr
Goto Top
Ihr zwei :D

Aber das hört sich perfekt an. geht aber ned :D

Ich bekomm die meldung "der befehl tail ist ned bekannt"

Ne idee?
mcmarc
mcmarc 23.09.2010 um 10:50:13 Uhr
Goto Top
OK face-smile mal blöde am Rande gefragt...
was für ein System setzt du ein, sag jetzt bitte nicht Windows face-wink?

Gruss
bankaifan
bankaifan 23.09.2010 um 10:51:22 Uhr
Goto Top
Ich hab mich schon gewundert warum dort oben Linux steht :D

Aber ja. ich hab Windows.
refugee
refugee 23.09.2010 um 11:07:05 Uhr
Goto Top
Ah ok, dachte mir nur vll weiß ich was falsches xD


verdammt -.-
Ich dachte mir schon das ist ja zu leicht xD

Hier kriegst du tail für windows
http://tailforwin32.sourceforge.net/
bankaifan
bankaifan 23.09.2010 um 11:08:53 Uhr
Goto Top
Des klappt ned :D Der Proxy hier blockt alle .exe-files.

Gäbe nur die möglichkeit das i-wie selbst zu schreiben, so wie bei sleep. ich bräuchte also den source code.
Biber
Biber 23.09.2010 um 11:17:21 Uhr
Goto Top
Moin bankaifan,

die Befehle tail/head gibt es auch zigfach als Windowsportierungen namens head.exe/tail.exe im Netz zu finden.
Wäre bei einer Logdatei (in handelsüblicher Größe) auch unbedingt meine Empfehlung.

Als Behelfskrücke, wenn es ohne derartige Helferlein sein soll oder eben keine installierte tail.exe vorausgesetzt werden kann, dann.

Dreistufiges Vorgehen:
  • Ermittlung der Gesamtzahl der Zeilen der Logdatei mit FOR/F und Findstr.
  • gewünschte Zeilenanzahl zurückrechnen, z.B. 10 Zeilen
  • Anzeigen der Logdatei mit MORE +%GesamtZeilenMinusX%

Skizze im Batch:
<code type>
@echo off & setLocal
for /f "delims=:" %%i in ('findstr /n $ deine.log') do set /a "lines=%%i"
:: in %lines% steht jetzt Gesamtzeilenanzahl
set /a lines-=10
:: in %lines% steht jetzt Gesamtzeilenanzahl minus 10
More +%lines% deine.log


Anmerkung:
- wirklich nur als Notnagel!
- Sissies würden noch das Ergebnis von "set /a lines-=10" prüfen... wenn die Logdatei nur 2 Zeilen hat und du entsprechend mit more die Zeilen %lines%=(-8) anzeigen lassen willst... dann kommt Grütze raus.

Grüße
Biber
60730
60730 23.09.2010 um 11:20:41 Uhr
Goto Top
moin,

wenn tail nicht geht und das ganze eh von verbätchelt ist - kommts ja "darauf" eh nicht mehr an...

for /f "tokens=1 delims=:" %%a in ('findstr /n "." c:\xyz.txt') do set zeilen=%%a  
set /a %zeilen%-10
more c:\xyz.txt +%zeilen%

Gruß

Weder schnell noch schön oder elegant face-wink

edit @Biber - jetzt war ich telefonieren.../edit
bankaifan
bankaifan 23.09.2010 um 11:25:14 Uhr
Goto Top
Das sieht doch wieder ma prima. Biber du bist der Beste :D

Ja. ist leider ned so einfach hier ne exe zu beantrage face-smile

Aber so müsste ich das hinbekomme. das mit dem more +* war die lösung

EDIT: eine frage noch, warum delims:?
bankaifan
bankaifan 23.09.2010 um 11:29:31 Uhr
Goto Top
@timobeil Ich weiß das es ned die feine Art ist aber geht leider nicht anders.

aber ich versteh das "delims=:" ned

EDIT:

Habs getested. funktioniert prima.

Das mit dem obs weniger als 10 zeilen sind muss ich ned prüfen. ich lass einfach beim löschen der datei ne neue erstellen in die 10 zeilen eingefügt werden :P

[OT]
kleiner ausschnitt aus bankaifans leben:

Bankaifan kopiert den Snippet von biber
Er fügt ihn in sein Programm ein.
Passt ihn an.
Startet das programm.
Erhält die Meldung
"Die Datei deine.log konnte nicht geöffnet werden"
Bankaifankopf -> Tisch *kopfschüttel*
[/OT]
Biber
Biber 23.09.2010 um 12:13:03 Uhr
Goto Top
Moin bankaifan,

zu den etwas unüblichen Parametern "delims=:" bei FOR/F und "." bzw "$" bei FindStr.

"Delims=:" bedeutet, dass jede Zeile in der FOR/F-Anweisung in Häppchen (neudeutsch tokens) aufgespalten wird und das Trennzeichen zwischen Häppchen ein Doppelpunkt ist
Bsp für die Logdatei-Zeilen mit FindStr /n aufgelistet
...
95:Dec 22, 2005, 10:38:18 Session 1: RCPT TO:
96:Dec 22, 2005, 10:38:18 Session 1: Recipient address eject:
..
Als erstes wird von FindStr /n die Zeilennummer (hier: 95, 96, ...) herausgeschrieben gefolgt von einem Doppelpunkt.
Und die will ich haben.

Die Findstr-Parameter "." bzw $
- ein Punkt steht für ein beliebiges Zeichen... alle nicht-leeren Zeilen werden angezeigt/berücksichtigt
- ein $ steht für ein Zeilenende (CRLF unter Windows). Alle Zeilen mit einem CRLF werden berücksichtigt.

So würde bei meiner Test-Logdatei die Gesamtzahl Zeilen bei T-Mo um 1 niedriger sein, weil meine Logdatei eine Leerzeile enthält.

P.S. Durch T-Mos "set /a %zeilen%-10" wird kurz das Ergebnis von "%zeilen%-10" angezeigt... aber der tail-Output ist wesentlich kürzer als bei mir. face-wink

Grüße
Biber
bankaifan
bankaifan 23.09.2010 um 12:40:14 Uhr
Goto Top
Supi.

Du bist echt ma n vorbild was Batch angeht :D Kann man dich für nen rundumkurs mieten? face-smile

Also das jetzt schonmal sehr hilfreich

Das heißt jetzt also wenn ich $ verwende zählt er mir auch die leeren zeilen mit.

danke soweit.

Bankaifan