Есть ли способ имитировать команду * nix tail в командной строке Windows? У меня есть файл, и мне нужен способ вырезать первые n строк текста. Например:
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
Крис Смит
источник
источник
head
показывает только первые n строк вместо их пропуска?head
команды стиля Unix , но желаемый результат выглядел так, как будто его не хваталоtail
. Похоже ответы о том,head
а не оtail
.tail
, однако в названии говорилосьhead
Ответы:
Нет точного эквивалента. Однако существует собственная команда DOS "more", у которой есть опция + n, которая начнет вывод файла после n-й строки:
Подсказка DOS:
Приведенная выше команда выведет все после первых двух строк.
На самом деле это обратная голова Unix :
Консоль Unix:
Вышеупомянутая команда напечатает только первые 2 строки файла.
источник
tail
начинает отсчет с конца файла. Итак,tail -2
напечатаем две последние строчки.-2
не является отрицательным. Это просто сокращенная версия-n 2
(количество строк). К сожалению, слишком много реализацийtail
не поддерживают-2
, что делает его очень несовместимым с сопутствующимиhead
реализациями, которые поддерживают. Меня это слишком много раз раздражало.head -n -2
что отличается отhead -n 2
. А вот с хвостом последнего не существует.ЕСЛИ у вас установлена Windows PowerShell (я думаю, что она включена с XP), вы можете просто запустить cmd.exe:
Глава команды:
Команда хвоста:
или прямо из PowerShell:
Обновить
В PowerShell 3.0 (Windows 8 и выше) добавлена
Tail
команда с псевдонимомLast
.Head
иFirst
псевдонимы дляTotalCount
.Итак, команды можно переписать как
источник
head
вместоtail
?Get-Content
теперь есть хвостовая команда. Например,Get-content -Tail 5 file.txt
напечатает последние пять строк файла file.txt. Кстати, спасибо за обновление вашего ответа.где n = количество отображаемых строк. Работает быстро и в точности как
head
команда.источник
Вы можете получить CoreUtils из GnuWin32 , который представляет собой набор стандартных инструментов unix, перенесенных на Windows.
В нем, помимо прочего, находится голова.
источник
Это полный взлом, но если это огромный файл, который вы хотите просто изучить формат, заголовок и т. Д., И ищете решение, вы всегда можете просто перенаправить вывод `` больше '' в новый файл и CTRL-C быстро. Строки вывода нельзя точно контролировать, и вы, скорее всего, убьете его в середине строки вывода, но это дешевый способ получить небольшой кусочек файла, который иначе непригоден для использования.
Ex.
источник
Что ж, это сделает это, но это примерно так же быстро, как кажется (примерно O (n * m), где n - количество отображаемых строк, а m - общее количество строк в файле):
Где «10» - это количество строк, которые вы хотите напечатать, а «filename» - это имя файла.
источник
head
.(expr) > out.txt
- при отправке результатов в файл, иначе вы получите только последнюю строку. Или добавьте -expr >> out.txt
.Powershell:
источник
При использовании more + n, о котором уже упоминал Мэтт, чтобы избежать пауз в длинных файлах, попробуйте следующее:
еще +1 myfile.txt> con
Когда вы перенаправляете вывод из more, он не останавливается - и здесь вы перенаправляете на консоль. Вы можете аналогичным образом перенаправить на другой файл, подобный этому, без дополнительных пауз, если это ваш желаемый конечный результат. Используйте>, чтобы перенаправить в файл и перезаписать его, если он уже существует, или >>, чтобы добавить в существующий файл. (Можно использовать либо для перенаправления на con.)
источник
вы также можете использовать Git bash, где также эмулируются голова и хвост
источник
Get-content -Tail n file.txt
с PowerShell - это единственное, что близко кtail
Linux.Get-Content *filename* | Select-Object -last *n*
Предложено выше нагрузок / синтаксического целого. Излишне говорить, что он был недоволен моим файлом журнала размером 10 ГБ ... Эта-Tail
опция действительно запускается в конце файла.источник
Если вам нужна команда head, один из простых способов получить ее - установить Cygwin. Тогда в вашем распоряжении будут все инструменты UNIX.
Если это не лучшее решение, вы можете попробовать использовать findstr и выполнить поиск индикатора конца строки.
findstr в MSDN: http://technet.microsoft.com/en-us/library/bb490907.aspx
источник
Вот быстрая родная команда head, которая дает вам первые 9 строк в DOS.
Первые 2 символа в каждой строке будут номером строки.
источник
Существует набор ресурсов, который можно загрузить отсюда: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en
Он содержит инструмент tail.exe, но совместим только с некоторыми версиями Windows.
(Скопировано из этого сообщения: Команда Tail для Windows )
источник
в PS попробуйте использовать команду:
Эта команда также может быть конвейерной.
Пример получения первой строки:
или получить первую строку:
источник
FWIW, для тех, кому просто нужно вырезать неопределенное количество записей из заголовка файла, подойдет more> . Это полезно только для того, чтобы иметь файл меньшего размера для работы на ранних этапах разработки чего-либо.
источник
Я не пробовал извлекать диапазон, но мне удалось получить строку, используя следующую команду DOS:
Поскольку большинство файлов содержат пробелы, эта команда извлекает каждую строку из всех файлов LOG и в основном нумерует их, начиная с 1 для каждого файла. Затем пронумерованные результаты передаются во вторую
FIND
команду, которая ищет строку с тегом 6.источник
На этой странице есть бесплатная
head
утилита, которую вы можете использовать. Еще не пробовал.источник
он вернет первую строку вашего файла в cmd Windows в переменной% line%.
источник
Как современный ответ, если вы используете Windows 10, вы можете использовать «Подсистему Linux для Windows».
https://docs.microsoft.com/en-us/windows/wsl/install-win10
Это позволит вам запускать собственные команды Linux из окон и, таким образом, запускать tail точно так же, как в Linux.
источник
Не думаю, что есть выход из коробки. В DOS такой команды нет, и пакетные файлы далеко не ограничены для ее моделирования (без особых проблем).
источник
Предупреждение, использование пакетного файла для, токенов и разделителей при вводе неизвестного текста может привести к катастрофе из-за специальной интерпретации символов, таких как &,!, <И т. Д. Такие методы следует зарезервировать только для предсказуемого текста.
источник