Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Read a huge text file from bottom up

90 views
Skip to first unread message

Hayato Iriumi

unread,
Apr 18, 2008, 9:14:01 PM4/18/08
to
I just wanted to share some code with the community today. I had a
need to take a look at a few thousand bytes of a huge text file from
the bottom and I was able to do it in PowerShell.

[Problem]
I manage build servers at my company and somehow the build process
generated a huge text file. The size was well over 600MB and opening
it in Notepad would not have been an option. I didn't even try. So I
had to come up with a way to peek at the last part of the huge text
file.

[Solution]
I thought of Get-Content Cmdlet, but I couldn't find any option that
allowed me to read text file from the bottom. So I turned to .NET
Framework. Here is the code. Please change $TextFilePath and
$BytesToRead as you see fit and please feel free to suggest anything
if there is better to accomplish this.

$TextFilePath = "D:\Temp\HugeTextFile"
$BytesToRead = 2048

$fs = [System.IO.File]::OpenRead($TextFilePath)
$fs.Position = $fs.Length - $BytesToRead

$sr = New-Object System.IO.StreamReader($fs)

$text = $sr.ReadToEnd()

$sr.Close()
$fs.Close()

$text

Bob Landau

unread,
Apr 19, 2008, 9:53:01 AM4/19/08
to
Thanks, I'm going to save this snippet.

I've also wanted the last M liines in a file while this may not do exactly
that for practical purposes its much faster than reading the entire file just
to return the last 10 lines.

Like you said you can aways adjust the bytes to read

Hayato Iriumi

unread,
Apr 19, 2008, 10:40:22 PM4/19/08
to
Hi, Bob.

> I've also wanted the last M liines in a file while this may not do exactly
> that for practical purposes its much faster than reading the entire file just
> to return the last 10 lines.

I guess it depends on what kind of text file you have. I personally
think it's safer to return certain number of bytes rather than number
of lines because the text file could be an XML file that has only one
line. In that case, you would be reading the entire file.

I was thinking... Maybe I could make this a custom Cmdlet. Hmm... but
it may be worth it because you can accomplish this in such a small
amount of effort accessing .NET Framework. I hope PowerShell team will
include this kind of Cmdlet in the next release.

Hayato Iriumi

unread,
Apr 19, 2008, 10:43:27 PM4/19/08
to
> I was thinking... Maybe I could make this a custom Cmdlet. Hmm... but
> it may be worth it because you can accomplish this in such a small
> amount of effort accessing .NET Framework. I hope PowerShell team will
> include this kind of Cmdlet in the next release.

oops, I meant it may NOT be worth it.

0 new messages