Как сделать то, что голова, хвост, больше, меньше, 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, если хотите, и он будет делать всю тяжелую работу за вас, и очень быстро.