2013-09-21 2 views
3

У меня есть огромный xml-файл (0.5 gb), без разрывов строк. Я хочу иметь возможность смотреть, скажем, первые 200 символов, не открывая весь файл. Есть ли способ сделать это с помощью PowerShell?получить первые n символов большого файла с powershell

+1

смотрит на меня, что получить-контент будет эффективно загружая весь файл, так что это не то, что я ищу для - если нет ленивых оценок m agic в gc, что я не могу найти документацию. –

+0

[Этот ответ] (http://stackoverflow.com/a/11010158/2707864) на http://stackoverflow.com/questions/1001776/how-can-i-split-a-text-file-using-powershell могут быть использованы в качестве основы. Он может работать быстрее, чем [этот ответ] (http://stackoverflow.com/a/18936628/2707864) ниже, если фрагмент для извлечения большой. Это вывод, который я получил из несистематических тестов. Попробуйте, как вы сочтете нужным. –

ответ

11

Вы можете прочитать на уровне байтов с Get-Content, как так:

$bytes = Get-Content .\files.txt -Encoding byte -TotalCount 200 
[System.Text.Encoding]::Unicode.GetString($bytes) 

Если файл журнала ASCII вы можете упростить это:

[char[]](Get-Content .\files.txt -Encoding byte -TotalCount 200) 
+0

Файл ASCII, и лучше всего работала версия ascii вашего первого ответа. Второй ответ на самом деле отображается как одна строка для каждого персонажа - немного трудно читать! –

+3

, если вы положите() вокруг всего, и '-join ''' снова станет одной строкой. – Eris

+2

@ Эрис да, что вернет его в строчную форму, но «() вокруг всего этого« бит не нужен ». –

0

Get-Content принимает параметр -ReadCount, поэтому вы можете брать только первые строки X.

Если вы действительно хотите характер детализацию, вам нужно использовать один из методов [IO.File] :: Читать из .NET

+2

, к сожалению, в файле нет разрывов строк, поэтому это не вариант –

Смежные вопросы