以下の様なリストがあったとする。
list.txt
Yamada Taro,Tokyo,18
Yamada Jiro,Tokyo,16
Sasaki Ichiro,Chiba,22
Suzuki Saburo,Hokkaido,40
Yamaguchi Shiro,Niigata,39
list.txt の4行目だけを抜き出す
- UNIX/Linuxの場合
root:\temp> cat list.txt | sed -e '4!d'
Suzuki Saburo,Hokkaido,40
root:\temp>
- Power Shell でやる場合
PS C:\temp> (Get-Content .\list.txt)[3]
Suzuki Saburo,Hokkaido,40
PS C:\temp>
list.txt の 3行目~5行目までを抜き出す場合
- Linux / UNIX の場合
sed –n '3,5p' list.txt
もしくは、以下でもできた。
sed -e '3,5!d' list.txt
- Windows Power Shell の場合
配列として扱われるので、3~5行目は、要素番号の2~4になる。
PS C:\temp> (Get-Content .\list.txt)[2..4]
Sasaki Ichiro,Chiba,22
Suzuki Saburo,Hokkaido,40
Yamaguchi Shiro,Niigata,39
PS C:\temp>
list.txt の1行目と4行目だけを抜き出す場合
- Linux/UNIXの場合
一つのコマンドにはできず、基本的に以下を行を変えて繰り返すしか無い?
root:\temp> cat list.txt | sed -e '4!d'
Suzuki Saburo,Hokkaido,40
root:\temp>
- Windows Power Shell の場合
PS C:\temp> (Get-Content .\list.txt)[0,3]
Yamada Taro,Tokyo,18
Suzuki Saburo,Hokkaido,40
PS C:\temp>
注意:
この記事を書いている 2011年時点で、正規表現などのファイル処理に関しては、Linux/Unix で実績のある sed に一日の長があるように思える。
230MByte のテキストファイルのある部分の行のブロックを抜き出す処理をした所、Linux上で sed を使用した場合、数秒で処理が終わったが、Power Shell では、数分待たされた上、メモリのException が出た。
また、幾つか Windows 用の sed ツールを試してみたが、対象ファイルによっては上手く動いたり、動かなかったりして(日本語文字の問題?)、解決策を見つけられていない。