のえら

技術備忘とかメモとか.間違いはつっこんでいただきたい所存.

サイズの大きいcsvファイルから先頭・末尾を取得するときのメモ

csvファイルはサイズが大きく(2GBくらい)なると、ExcelでもテキストエディタでもACCESSでも開けなくなる。
(Windowsコマンドtypeで出力する分には問題ないんだけども)
そんなおっきなcsvファイルの先頭末尾を取得するときのメモ。
windowsコマンドではheadとtailがない。。

headとtailの代替コマンド
MS-DOS バッチファイル Tips - 翔星 Be ランド日記

バッチにして実行してみる

call head.bat *filename* 15 > *tempfilename*

→「このコマンドを実行するのに十分な記憶域がありません。」と出て実行できない。。


メモリが足りなくて実行できないのでPowerShellでやってみる
Windows equivalent of the 'tail' command - Stack Overflow
→この回答を参照してみた(http://stackoverflow.com/a/14341672)

head相当:

powershell -command "& {Get-Content *filename* -TotalCount *n*}"

→TotalCountは先頭から指定された行数取得するオプション
https://technet.microsoft.com/ja-jp/library/hh849787(v=wps.620).aspx

tail相当:

powershell -command "& {Get-Content *filename* | Select-Object -last *n*}"

→コレクション内の末尾から指定の行数を取得する(lastオプション)
 こっちはちょっと時間がかかる
 なお、Ver.3.0からGet-ContentにTailオプションが導入されたのでSelect-Objectを使わなくてもOK

※アンパサンドの意味は?
→引用符で囲まれたスクリプトを実行する場合は、その先頭にアンパサンドが必要

直接PowerShellから実行する場合は括弧内のコマンドだけでよい

おまけ:
PowerShell入門によい記事
https://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner05.aspx