Как сделать то, что голова, хвост, больше, меньше, sed делают в Powershell?
Мне нужны эти команды для проверки файла журнала в Windows, но я не устанавливаю никаких программ, и мне нравится Powershell с Windows.
5 ответов:
Get-Content
(синоним:gc
) - это ваш обычный вариант для чтения текстового файла. Затем вы можете фильтровать дальше:gc log.txt | select -first 10 # head gc -TotalCount 10 log.txt # also head gc log.txt | select -last 10 # tail gc -Tail 10 log.txt # also tail (since PSv3), also much faster than above option gc log.txt | more # or less if you have it installed gc log.txt | %{ $_ -replace '\d+', '()' } # sed
это работает достаточно хорошо для небольших файлов, более крупные (более нескольких MiB), вероятно, немного медленнее.
The Расширения Сообщества PowerShell включите некоторые командлеты для специализированных файлов (например, Get-FileTail).
вот встроенные способы сделать
head
иtail
. Не используйте трубы, потому что если у вас есть большой файл, это будет очень медленно. Использование этих встроенных опций будет чрезвычайно быстрым даже для огромных файлов.gc log.txt -head 10 gc log.txt -tail 10 gc log.txt -tail 10 -wait # equivalent to tail -f
more.exe
существует на Windows, портыless
легко найти (и Расширения Сообщества PowerShell, PSCX, включает в себя один).PowerShell на самом деле не предоставляет никакой альтернативы отдельным программам, но для структурированных данных
Out-Grid
может быть полезно.
Head
иTail
можно заменитьSelect-Object
С помощью-First
и-Last
параметры соответственно.
Sed
функции все доступны, но структурированы довольно по-разному. Параметры фильтрации доступны вWhere-Object
(или черезForeach-Object
и некоторые состояния для диапазонов). Другие, преобразующие, операции могут быть выполнены сSelect-Object
иForeach-Object
.однако, когда PowerShell передает (.NET) объекты – со всей их типизированной структурой, например. даты остаются
DateTime
экземпляры-а не просто строки, которые каждая команда должна разобрать сама, большая частьsed
и другие такие программы являются избыточными.
Если вам нужно запросить большие (или маленькие) файлы журналов в Windows, лучший инструмент, который я нашел, - это Microsoft free Log Parser 2.2. Вы можете вызвать его из PowerShell, если хотите, и он будет делать всю тяжелую работу за вас, и очень быстро.