команда tail в windows
Эквивалент Windows команды ‘tail’
Есть ли способ имитировать команду * nix tail в командной строке Windows? У меня есть файл, и мне нужен способ вырезать первые n строк текста. Например:
Нет точного эквивалента. Однако существует собственная команда DOS «more», у которой есть опция + n, которая начнет вывод файла после n-й строки:
Приведенная выше команда выведет все после первых двух строк.
На самом деле это обратная голова Unix :
Вышеупомянутая команда напечатает только первые 2 строки файла.
ЕСЛИ у вас установлена Windows PowerShell (я думаю, что она включена с XP), вы можете просто запустить cmd.exe:
или прямо из PowerShell:
Обновить
Итак, команды можно переписать как
где n = количество отображаемых строк. Работает быстро и в точности как head команда.
В нем, помимо прочего, находится голова.
Это полный взлом, но если это огромный файл, который вы хотите просто изучить формат, заголовок и т. Д., И ищете решение, вы всегда можете просто перенаправить вывод « больше » в новый файл и CTRL-C быстро. Строки вывода нельзя точно контролировать, и вы, скорее всего, убьете его в середине строки вывода, но это дешевый способ получить небольшой кусочек файла, который иначе непригоден для использования.
При использовании more + n, о котором уже упоминал Мэтт, чтобы избежать пауз в длинных файлах, попробуйте следующее:
еще +1 myfile.txt> con
Команда tail в windows
Здесь опишу несколько альтернативных вариантов замены tail, которые можно установить и использовать на Windows.
[MinGW]
Это набор утилит Unix, перенесенных в среду Windows [1]. Установка вопросов не возникает, все происходит как обычно. После установки в переменной %Path% автоматом прописывается путь до бинарных файлов утилит, среди которых находится и tail.exe, так что теперь Вы можете пользоваться этой утилитой без проблем.
Можно также скачать и установить утилиту tail отдельно [2]. Поместите файлы *.dll и tail.exe архива в папку system32 (cd %SystemRoot%\system32), и Вы также сможете запускать tail из любого каталога.
Можно использовать как длинные опции командной строки, так и короткие.
Если первый символ K (количество байт или строк) является символом +, выведутся строки начиная с K-той от начала каждого файла, иначе будут выводиться последние K элементов файла. K может иметь суффикс множителя *, например:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, и так далее для T, P, E, Z, Y.
Сообщайте об ошибках на почту bug-coreutils@gnu.org
Домашняя страница основных утилит GNU: ;
Информация помощи по GNU software: ;
Сообщайте от ошибках перевода на ;
Для просмотра полной документации запустите команду: info coreutils ‘tail invocation’
[Tail для Win32]
• Можно сразу отслеживать содержимое нескольких файлов в реальном времени.
• Можно детектировать появление ключевых слов и подсвечивать их.
• Можно отправлять оповещение через SMTP или MAPI о появлении ключевых слов.
• Архитектура плагинов позволит Вам написать специализированные обработчики отслеживаемых логов.
• Можно обрабатывать файлы любого размера на всех типах носителей (расположенных как локально, так и в сети).
Подробнее информацию см. на страничке проекта [3].
[Другие варианты замены tail на платформах Windows и Unix]
Вы можете также отфильтровать лог, если укажете справа в командной строке регулярное выражение:
Особенности использования Powershell для целей tail:
• Быстрое и простое использование.
• Практически нулевые затраты времени на обучение.
• На новых системах Windows не требуется делать никаких инсталляций (PowerShell доступен на всех версиях Windows начиная с Windows XP SP2 и SP3).
• Медленно работает с большими файлами.
• Имеет только базовый функционал, однако есть сторонние расширения. Например, с ними можно отслеживать одновременно несколько файлов.
По умолчанию система PowerShell не установлена на Windows XP, однако есть возможность её установить на Windows XP SP3 вместе с пакетом обновления KB968930 Windows Management Framework Core [5]. Также можно установить PowerShell вместе с KB968930 на операционных системах Windows Server 2003 (x86 и x64), Windows Server 2008 (x86 и x64), Windows Vista (x86 и x64).
• Можно просматривать файлы лога удаленно, подключаясь к WEB-серверу через сеть, прямо в WEB-браузере.
• Можно осуществлять поиск по файлам лога.
• Поддерживаются системы Windows и Linux.
• Распространяется на условиях Free trial, малая месячная оплата.
• Вы можете прямо в своем любимом редакторе Vim отслеживать файлы лога, не покидая редактор.
• С использованием закладок можно отслеживать несколько файлов одновременно.
• Окно предпросмотра «Preview» обновляется в соответствии с использованием Vim.
• Перед установкой прочтите информацию об открытых багах (open issues) на Google Code.
• Все еще находится в активной разработке (на момент написания статьи последняя версия была выпущена 4 недели назад).
• Можно использовать маски wildcard для имен файлов. Это позволяет отслеживать только что появляющиеся файлы лога.
• Для фильтрации можно использовать регулярные выражения.
• Исходный код доступен для закачки из публичного репозитория SVN.
• Поддерживаются все основные платформы UNIX.
Особенности программы BareTail:
• Можно отслеживать сразу несколько файлов, расположенных на разных серверах.
• Автоматически проверяет запуск нужного процесса и обновляет файл лога, подстраивая соответственно просмотр.
• Скрипт старый (1997 года), и может не работать на новых дистрибутивах Unix и патчах Perl (скрипт основан на Perl 4.0, патч уровня 36).
• Работает только в UNIX.
Разработано SnakeNest. Особенности:
• Малые затраты памяти и малая нагрузка на CPU при работе даже с большими файлами.
• Настраиваемые горячие клавиши для быстрого перемещения по файлам.
• Может делать tail-отслеживание директории логов, где сохраняются последние файлы лога.
• Работает только на Windows.
• Доступен в репозиториях Git и Github.
• Использует inotify API, чтобы определить, нужно или нет перечитать отслеживаемый файл.
[PowerShell: отображение текста в правильной кодировке]
Иногда команда powershell Get-Content дает отображение русского кракозябрами. Причина в том, что текст не воспринимается в правильной кодировке. Пример вывода кракозябрами лог-файла в кодировке UTF8:
Тот же текст, отображаемый в правильной кодировке:
Эквивалент Windows команды ‘tail’
Есть ли способ имитировать команду * nix tail в командной строке Windows? У меня есть файл, и мне нужен способ вырезать первые n строк текста. Например:
22 ответа
Нет точного эквивалента. Однако существует собственная команда DOS «more», у которой есть опция + n, которая начнет вывод файла после n-й строки:
Приведенная выше команда выведет все, что находится после первых двух строк.
На самом деле это противоположность head Unix:
Приведенная выше команда распечатает только первые 2 строки файла.
ЕСЛИ у вас установлена Windows PowerShell (я думаю, она включена с XP) вы можете просто запустить из cmd.exe:
Или прямо из PowerShell:
обновить
Итак, команды можно переписать как
Вы можете получить CoreUtils с GnuWin32, который представляет собой набор стандартных инструментов unix, перенесенных на Windows.
В нем, помимо прочего, находится голова.
Это полный взлом, но если это огромный файл, который вы хотите просто проверить формат, заголовок и т. Д., И ищете решение, вы всегда можете просто перенаправить вывод « больше » в новый файл и CTRL-C быстро. Строки вывода нельзя точно контролировать, и вы, скорее всего, убьете его в середине строки вывода, но это дешевый способ получить небольшой фрагмент файла, который иначе был бы непригоден.
При использовании more + n, о котором уже упоминал Мэтт, чтобы избежать пауз в длинных файлах, попробуйте следующее:
Еще +1 myfile.txt> con
Вы также можете использовать Git bash, где также эмулируются голова и хвост
Если это не лучшее решение, вы можете попробовать использовать findstr и выполнить поиск индикатора конца строки.
Вот быстрая нативная команда head, которая дает вам первые 9 строк в DOS.
Первые 2 символа в каждой строке будут номером строки.
Он содержит инструмент tail.exe, но совместим только с некоторыми версиями Windows.
FWIW, для тех, кому просто нужно вырезать неопределенное количество записей из заголовка файла, подойдет more> . Это полезно только для того, чтобы иметь файл меньшего размера для работы на ранних этапах разработки чего-либо.
Я не пробовал извлекать диапазон, но мне удалось получить строку, используя следующую команду DOS:
Он вернет первую строку вашего файла в cmd Windows в переменной% line%.
В качестве современного ответа, если вы используете Windows 10, вы можете использовать «Подсистему Linux для Windows».
Это позволит вам запускать собственные команды Linux из окон и, таким образом, запускать tail точно так же, как в Linux.
Чтобы сохранить первые несколько строк текста (заголовок):
Чтобы удалить первые несколько строк текста (хвост):
Примечание.
Функция головы также может быть достигнута с помощью fsutil
Функция хвоста также может быть достигнута с помощью fc & comp
Проверено на Win 10 cmd
Не думаю, что есть выход из коробки. В DOS такой команды нет, и пакетные файлы далеко не ограничены для ее моделирования (без особых проблем).
A Windows equivalent of the Unix tail command [closed]
Want to improve this question? Update the question so it’s on-topic for Stack Overflow.
The community reviewed whether to reopen this question last month and left it closed:
Original close reason(s) were not resolved
I’m looking for the equivalent of the Unix ‘tail’ command that will allow me to watch the output of a log file while it is being written to.
26 Answers 26
If you use PowerShell then this works:
Posting Stefan’s comment from below, so people don’t miss it
I’d suggest installing something like GNU Utilities for Win32. It has most favourites, including tail.
I’ve always used Baretail for tailing in Windows. It’s free and pretty nice.
Edit: for a better description of Baretail see this question
You can get tail as part of Cygwin.
Anybody interested in a DOS CMD tail using batch commands (see below).
It’s not prefect, and lines sometime repeat.
There are quite a number of options, however all of them have flaws with more advanced features.
I’ve used Tail For Windows. Certainly not as elegant as using but then, you’re using Windows. 😉
With Windows PowerShell you can use:
If you do not want to install anything at all you can «build your own» batch file that does the job from standard Windows commands. Here are some pointers as to how to do it.
1) Using find /c /v «» yourinput.file, get the number of lines in your input file. The output is something like:
2) Using for /f, parse this output to get the number 15.
3) Using set /a, calculate the number of head lines that needs to be skipped
4) Using for /f «skip=n» skip the head lines and echo/process the tail lines.
If I find the time, I will build such a batch file and post it back here.
Windows equivalent of the ‘tail’ command [duplicate]
Is there a way to simulate the *nix tail command on the Windows command line? I have a file and I want a way to snip off the first n lines of text. For example:
22 Answers 22
IF you have Windows PowerShell installed (I think it’s included since XP) you can just run from cmd.exe:
or, directly from PowerShell:
update
So, commands can be re-written as
No exact equivalent. However there exist a native DOS command «more» that has a +n option that will start outputting the file after the nth line:
The above command will output everything after the first 2 lines.
This is actually the inverse of Unix head:
The above command will print only the first 2 lines of the file.
where n = the number of rows to display. Works fast and is exactly like head command.
You could get CoreUtils from GnuWin32, which is a collection of standard unix tools, ported to Windows.
It, among other things, contains head.
This is a total hack but if it’s a huge file that you want to just examine the format, header, etc. and you’re looking for a solution you can always just redirect the ‘more’ output to a new file and CTRL-C quickly. The output rows can’t be controlled precisely and you will most likely kill it in the middle of a line of output but it’s a cheap way of grabbing a small bit of an otherwise unusable file.
Well, this will do it, but it’s about as fast as it looks (roughly O(n*m), where n is the number of lines to display and m is the total number of lines in the file):
Where «10» is the number of lines you want to print, and «filename» is the name of the file.
When using more +n that Matt already mentioned, to avoid pauses in long files, try this:
more +1 myfile.txt > con