Gibt es eine Möglichkeit, den Befehl * nix tail in der Windows-Befehlszeile zu simulieren ? Ich habe eine Datei und möchte eine Möglichkeit, die ersten n Textzeilen abzuschneiden. Beispielsweise:
D:\>type file.txt
line one
line two
line three
D:\>*[call to tail]* > result.txt
D:\>type result.txt
line two
line three
windows
command-line
Chris Smith
quelle
quelle
head
nur die ersten n Zeilen an, anstatt sie wegzulassen?head
Befehl im Unix-Stil , aber die gewünschte Ausgabe schien zu fehlentail
. Es sieht so aus, als ob es um Antworten gehthead
und nichttail
.tail
, jedoch der Titel sagtehead
Antworten:
Kein genaues Äquivalent. Es gibt jedoch einen nativen DOS-Befehl "more" mit der Option + n, der die Ausgabe der Datei nach der n-ten Zeile startet:
DOS-Eingabeaufforderung:
Der obige Befehl gibt alles nach den ersten 2 Zeilen aus.
Dies ist eigentlich die Umkehrung von Unix head :
Unix-Konsole:
Mit dem obigen Befehl werden nur die ersten beiden Zeilen der Datei gedruckt.
quelle
tail
beginnt mit dem Zählen ab dem Ende der Datei. Sotail -2
werden die letzten beiden Zeilen drucken.-2
ist kein Negativ. Es ist nur eine Kurzversion von-n 2
(Anzahl der Zeilen). Leider unterstützen viel zu viele Implementierungen vontail
nicht-2
, was es sehr inkonsistent mit begleitendenhead
Implementierungen macht, die dies tun. Es hat mich zu oft geärgert.head -n -2
was sich von unterscheidethead -n 2
. Aber mit Schwanz existiert letzteres nicht.Wenn Sie Windows PowerShell installiert haben (ich denke, es ist seit XP enthalten), können Sie es einfach von cmd.exe aus ausführen:
Hauptbefehl:
Heckbefehl:
oder direkt von PowerShell:
aktualisieren
PowerShell 3.0 (Windows 8 und höher) hat einen
Tail
Befehl mit Alias hinzugefügtLast
.Head
undFirst
Aliase zuTotalCount
wurden ebenfalls hinzugefügt.Befehle können also als neu geschrieben werden
quelle
head
statttail
?Get-Content
jetzt einen Endbefehl hat. Druckt beispielsweiseGet-content -Tail 5 file.txt
die letzten fünf Zeilen der Datei file.txt. Vielen Dank für die Aktualisierung Ihrer Antwort übrigens.Dabei ist n die Anzahl der anzuzeigenden Zeilen. Funktioniert schnell und ist genau wie
head
Befehl.quelle
Sie können CoreUtils von GnuWin32 erhalten , einer Sammlung von Standard-Unix-Tools, die auf Windows portiert sind.
Es enthält unter anderem Kopf.
quelle
Dies ist ein totaler Hack, aber wenn es sich um eine riesige Datei handelt, bei der Sie nur das Format, den Header usw. untersuchen möchten und nach einer Lösung suchen, können Sie die "Mehr" -Ausgabe immer einfach in eine neue Datei und STRG-C umleiten schnell. Die Ausgabezeilen können nicht genau gesteuert werden, und Sie werden sie höchstwahrscheinlich in der Mitte einer Ausgabezeile beenden, aber es ist eine kostengünstige Möglichkeit, ein kleines Stück einer ansonsten unbrauchbaren Datei abzurufen.
Ex.
quelle
Nun, das wird es tun , aber es ist ungefähr so schnell wie es aussieht (ungefähr O (n * m), wobei n die Anzahl der anzuzeigenden Zeilen und m die Gesamtzahl der Zeilen in der Datei ist):
Dabei ist "10" die Anzahl der Zeilen, die Sie drucken möchten, und "Dateiname" der Name der Datei.
quelle
head
.(expr) > out.txt
-, wenn Sie die Ergebnisse an eine Datei senden, da sonst nur die letzte Zeile angezeigt wird. Oder anhängen -expr >> out.txt
.Power Shell:
quelle
Wenn Sie mehr + n verwenden, als Matt bereits erwähnt hat, versuchen Sie Folgendes, um Pausen in langen Dateien zu vermeiden:
mehr +1 myfile.txt> con
Wenn Sie die Ausgabe von mehr umleiten, wird sie nicht angehalten - und hier leiten Sie zur Konsole um. Sie können auf ähnliche Weise zu einer anderen Datei wie dieser umleiten, ohne die Pausen von mehr, wenn dies Ihr gewünschtes Endergebnis ist. Verwenden Sie>, um zur Datei umzuleiten und diese zu überschreiben, falls sie bereits vorhanden ist, oder >>, um sie an eine vorhandene Datei anzuhängen. (Kann entweder zum Umleiten zu con verwenden.)
quelle
Sie können auch Git Bash verwenden, bei dem Kopf und Schwanz ebenfalls emuliert werden
quelle
Get-content -Tail n file.txt
mit Powershell ist das einzige, wastail
in Linux nahe kommt .Das
Get-Content *filename* | Select-Object -last *n*
oben vorgeschlagene lädt / analysiert das Ganze. Unnötig zu erwähnen, dass es mit meiner 10-GB-Protokolldatei nicht zufrieden war ... Die-Tail
Option beginnt am Ende der Datei.quelle
Wenn Sie den Befehl head möchten, können Sie ihn auf einfache Weise installieren, indem Sie Cygwin installieren. Dann stehen Ihnen alle UNIX-Tools zur Verfügung.
Wenn dies keine gute Lösung ist, können Sie versuchen, findstr zu verwenden und nach dem Zeilenende-Indikator zu suchen.
findstr auf MSDN: http://technet.microsoft.com/en-us/library/bb490907.aspx
quelle
Hier ist ein schneller nativer Kopfbefehl, mit dem Sie die ersten 9 Zeilen unter DOS erhalten.
Die ersten 2 Zeichen in jeder Zeile sind die Zeilennummern.
quelle
Es gibt ein Ressourcen-Kit, das hier heruntergeladen werden kann: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=de
Es enthält ein Tool tail.exe, ist jedoch nur mit einigen Windows-Versionen kompatibel
(Von diesem Beitrag kopiert: Befehl Tail für Windows )
quelle
Versuchen Sie in PS, den folgenden Befehl zu verwenden:
Dieser Befehl kann auch per Pipeline weitergeleitet werden.
Beispiel für die erste Zeile:
oder um die erste Zeile zu erhalten:
quelle
FWIW, für diejenigen, die nur eine unbestimmte Anzahl von Datensätzen vom Kopf der Datei abschneiden müssen, funktioniert more> gut. Dies ist nur nützlich, um eine kleinere Datei zu haben, mit der Sie in den frühen Stadien der Entwicklung von etwas arbeiten können.
quelle
Ich habe nicht versucht, einen Bereich zu extrahieren, konnte jedoch mit dem folgenden DOS-Befehl eine Zeile abrufen:
Da die meisten Dateien Leerzeichen enthalten, zieht dieser Befehl jede Zeile aus allen LOG-Dateien und nummeriert sie grundsätzlich ab 1 für jede Datei. Die nummerierten Ergebnisse werden dann in den zweiten
FIND
Befehl weitergeleitet, der nach der als Nummer 6 gekennzeichneten Zeile sucht.quelle
Auf dieser Seite gibt es ein kostenloses
head
Dienstprogramm , das Sie verwenden können. Ich habe es noch nicht versucht.quelle
Die erste Zeile Ihrer Datei in cmd Windows wird in der Variablen% line% zurückgegeben.
quelle
Als zeitgemäße Antwort können Sie unter Windows 10 das "Linux-Subsystem für Windows" verwenden.
https://docs.microsoft.com/en-us/windows/wsl/install-win10
Auf diese Weise können Sie native Linux-Befehle in Windows ausführen und so tail genau so ausführen, wie Sie es unter Linux tun würden.
quelle
Ich glaube nicht, dass es einen Ausweg gibt. Es gibt keinen solchen Befehl in DOS und Batch-Dateien sind viel zu beschränkt, um ihn zu simulieren (ohne größere Schmerzen).
quelle
Warnung: Die Verwendung der Batchdatei für, Token und Delims bei unbekannter Texteingabe kann aufgrund der speziellen Interpretation von Zeichen wie &,!, <Usw. eine Katastrophe sein. Solche Methoden sollten nur für vorhersehbaren Text reserviert werden.
quelle