satocchiaブログ

satocchiaブログ

PR

×

キーワードサーチ

▼キーワード検索

プロフィール

satocchia

satocchia

カレンダー

お気に入りブログ

まだ登録されていません

コメント新着

tomoZo@ Re:Pale Moon日本語化トラブル(06/06) はじめまして。 28.16.0でまたもや提供さ…
satocchia @ Re[1]:Pale Moon日本語化トラブル(06/06) zui_9さんへ 本日、確認しました。ようや…
zui_9 @ Re:Pale Moon日本語化トラブル(06/06) 上記リンク「Githubのプロジェクト」の左…
わたなべ@ Re:powershellコンソール、見づらくありませんか?(08/26) 初めまして、この情報最高です! 背景を白…
y__@ Re:uwscでGUIフォーム(05/12) UWSC 仮掲示板から飛んできました。 HTAで…

フリーページ

2019.02.05
XML
カテゴリ: powershell
powershell3.0以降はget-content -tailがあるので問題ないのですが、windows7で巨大ログを見たいときなど、
get-content -path ファイルパス |select -last 行数
なんてやると、ファイルを全部読み込んじゃうまで待たされてキツイわけです。
で、

function    tail( $path, [int]$num=40 ){
    if ( $num -lt 0 ){
        [io.file]::readAllLines($path)[$num..-1]
    } else {
        [io.file]::readAllLines($path)[(-1*$num)..-1]

}
これも、全部読み込んではいるんだけど、行レベルで読んでいるので十数倍は軽減できそう。
これ以上速度を上げるなら、行単位ではできないけどバイト単位で

function    tail( $logpath, $bytes=1024 ){
    $fs                =[System.IO.File]::OpenRead($logpath)
    $fs.Position     =$fs.Length - $Bytes
    $enc            =[System.Text.Encoding]::unicode
    $sr                =New-Object System.IO.StreamReader( $fs, $enc )
    $text            =$sr.ReadToEnd()
    $sr.Close()
    $fs.Close()

}

これなら、一瞬で終わるんだけど行ベースでないところがなんだかなあ。


書いた後、ちょっとぐぐってみたら​、​ PSCX ​を入れればget-FileTailコマンドレットが使えるそうな。ソースを見るとsjis未対応ではあるようですが。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2020.12.14 22:44:28
コメント(0) | コメントを書く
[powershell] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: