Unter Windows mit Powershell, was die entsprechenden Befehle an Linux sind head
, tail
, more
, less
und sed
?
windows
powershell
Yue Zhang
quelle
quelle
notepad
als Basis verwenden, würde ich vorschlagen, nach alternativen Texteditoren zu suchen. Es gibt viele (sowohl kostenlose als auch kostenpflichtige) Alternativen. Alle sind dem Notizblock überlegen (obwohl das keine große Herausforderung ist).Antworten:
Get-Content
(Alias :)gc
ist Ihre übliche Option zum Lesen einer Textdatei. Sie können dann weiter filtern:Dies funktioniert gut genug für kleine Dateien, größere (mehr als ein paar MiB) sind wahrscheinlich etwas langsam.
Die PowerShell-Community-Erweiterungen enthalten einige Cmdlets für spezielle Dateien (z. B. Get-FileTail).
quelle
-last 2
eine 1-GB-CSV- Datei zu erstellen . Heißgetränk: ☕Get-Content -Tail 2
stattdessen verwenden. Das geht definitiv schneller.gc log.txt | %{ $_ -replace '\d+', '($0)' } # sed
Das ist eigentlich nicht das Sed-Tool, da es den Inhalt nicht zurücksetzt. Es braucht Set-Content.-Last
ist langsam aus dem gleichen Grundawk
wäre langsam für die gleiche Aufgabe: Es muss zuerst den Stream komplett verbrauchen. DeshalbGet-Content -Tail
gibt es. Und es gibt keine,head
weil es nicht in die Namenskonventionen passt und sein Zweck bereits erfüllt istSelect-Item
.-head
. Siehe meine Antwort stackoverflow.com/a/41626586/1081043Hier sind die integrierten Möglichkeiten
head
undtail
. Verwenden Sie keine Pipes, denn wenn Sie eine große Datei haben, ist diese extrem langsam. Die Verwendung dieser integrierten Optionen ist selbst bei großen Dateien extrem schnell.quelle
| select -last
verwendet Rohre. Ich benutze-tail
ohne Rohre. Wenn Sie jedoch jemals zwei widersprüchliche Antworten finden, können Sie der Person mit einem viel höheren Ruf wahrscheinlich vertrauen. Sie können die beiden Methoden auch einfach für eine große Datei ausprobieren. Bei einer großen Datei ist dies sehr offensichtlich.more.exe
existiert unter Windows, Ports vonless
sind leicht zu finden (und die PowerShell Community Extensions , PSCX, enthalten einen).PowerShell bietet für beide keine Alternative zu separaten Programmen, aber für strukturierte Daten
Out-Grid
kann dies hilfreich sein.Head
undTail
können beide mitSelect-Object
den Parametern-First
und emuliert werden-Last
.Sed
Funktionen sind alle verfügbar, aber ziemlich unterschiedlich strukturiert. Die Filteroptionen sind inWhere-Object
(oder viaForeach-Object
und einigen Status für Bereiche) verfügbar . Andere, transformierende Operationen können mitSelect-Object
und durchgeführt werdenForeach-Object
.Wenn PowerShell jedoch (.NET) Objekte übergibt - mit all ihrer typisierten Struktur, z. Datumsangaben bleiben
DateTime
Instanzen - und nicht nur Zeichenfolgen, die jeder Befehl selbst analysieren muss. Vielesed
dieser Programme sind redundant.quelle
"-TotalCount" antwortet in diesem Fall genau wie "-head". Sie müssen -TotalCount oder -head verwenden, um den Befehl so auszuführen. Aber - TotalCount ist irreführend - es funktioniert nicht, wenn Sie tatsächlich irgendwelche Zählungen erhalten ...
Das obige Skript, das in PS 5.1 getestet wurde, ist die gleiche Antwort wie unten ...
Also dann benutze einfach '-head 25 "schon!
quelle
Wenn Sie große (oder kleine) Protokolldateien unter Windows abfragen müssen, ist das beste Tool, das ich gefunden habe, der kostenlose Log Parser 2.2 von Microsoft . Sie können es von PowerShell aus aufrufen, wenn Sie möchten, und es erledigt das ganze schwere Heben für Sie und auch sehr schnell.
quelle
Ich habe einige bessere Lösungen:
quelle
Sie erhalten nicht alle Fehler mit dem Pushpop-Code BTW, Ihr Code funktioniert nur mit der Option "sed". Der Rest ignoriert alles andere als gc und path.
quelle