Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Textdatei ausgeben (die letzten 10 zeilen)

Frage Entwicklung Batch & Shell

Mitglied: bankaifan

bankaifan (Level 2) - Jetzt verbinden

23.09.2010 um 10:19 Uhr, 9293 Aufrufe, 17 Kommentare

guten Morgen zusammen,

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

01.
  
02.
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
Mitglied: refugee
23.09.2010 um 10:22 Uhr
hey
wie wärs mit tail?
Bitte warten ..
Mitglied: mcmarc
23.09.2010 um 10:28 Uhr
Hallo

oder

- less -

Deine Beschreibung was genau Du machen willst, ist etwas mager

Gruss
Bitte warten ..
Mitglied: bankaifan
23.09.2010 um 10:31 Uhr
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.
Bitte warten ..
Mitglied: mcmarc
23.09.2010 um 10:35 Uhr
aha ok dann wäre der befehl:

"tail -10" geeignet

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

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

oder in der console: "man tail" eingeben.

Gruss
Bitte warten ..
Mitglied: refugee
23.09.2010 um 10:40 Uhr
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
Bitte warten ..
Mitglied: mcmarc
23.09.2010 um 10:45 Uhr
ja richtig, ich wollte den syntax verständlich machen da bankaifan die Befehle noch nicht gehört hatte .. man weiß ja nie, vieleicht sollen es später doch 15 Zeilen sein .

hehe merci
Bitte warten ..
Mitglied: bankaifan
23.09.2010 um 10:48 Uhr
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?
Bitte warten ..
Mitglied: mcmarc
23.09.2010 um 10:50 Uhr
OK mal blöde am Rande gefragt...
was für ein System setzt du ein, sag jetzt bitte nicht Windows ?

Gruss
Bitte warten ..
Mitglied: bankaifan
23.09.2010 um 10:51 Uhr
Ich hab mich schon gewundert warum dort oben Linux steht :D

Aber ja. ich hab Windows.
Bitte warten ..
Mitglied: refugee
23.09.2010 um 11:07 Uhr
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/
Bitte warten ..
Mitglied: bankaifan
23.09.2010 um 11:08 Uhr
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.
Bitte warten ..
Mitglied: Biber
23.09.2010 um 11:17 Uhr
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:
01.
@echo off & setLocal 
02.
for /f "delims=:" %%i in ('findstr /n $ deine.log') do set /a "lines=%%i" 
03.
:: in %lines% steht jetzt Gesamtzeilenanzahl  
04.
set /a lines-=10 
05.
:: in %lines% steht jetzt Gesamtzeilenanzahl minus 10 
06.
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
Bitte warten ..
Mitglied: 60730
23.09.2010 um 11:20 Uhr
moin,

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

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

Weder schnell noch schön oder elegant

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

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

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

EDIT: eine frage noch, warum delims:?
Bitte warten ..
Mitglied: bankaifan
23.09.2010 um 11:29 Uhr
@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]
Bitte warten ..
Mitglied: Biber
23.09.2010 um 12:13 Uhr
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.

Grüße
Biber
Bitte warten ..
Mitglied: bankaifan
23.09.2010 um 12:40 Uhr
Supi.

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

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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...