grep

テキストファイルの中の文字列を検索する場合

Select-Stringコマンドレット

 grep taro user.txt           # Bash
 Select-String taro user.txt  # PowerShell
 sls taro user.txt            # PowerShell

find -exec grep(あるいはfind | xargs grep)のように再帰的に検索する場合

 find . -name "*.txt" -exec grep "hello"  # Bash
 dir -r *.txt | sls hello                 # PowerShell

dir(Get-ChildItem)の-Filterオプションの詳細については別ページを参照の事。

検索出来る文字コード

 sls "こんにちは" utf8.txt,utf8n.txt,utf16le.txt,sjis.txt
 
 utf8.txt:1:こんにちは
 utf8n.txt:1:こんにちは
 utf16le.txt:1:こんにちは
  • UTF8(BOM有り無し共)、UTF16LEは対象になる。
  • SJISは対象にならない。

SJISを検索する場合

 sls -encoding default "こんにちは" utf8.txt,utf8n.txt,utf16le.txt,sjis.txt
 
 utf8.txt:1:こんにちは
 utf16le.txt:1:こんにちは
 sjis.txt:1:こんにちは
  • SJIS、UTF8(BOM有り)、UTF16LEは対象になる。
  • UTF8(BOM無し)は対象にならない。

UNIX系OSと相互運用は?

  • UNIX系OSと相互運用する事を考えるとUTF8(BOM無し)が無難に思える。
  • が、それ以外の文字コードのファイルも混じる状況なら、Select-Stringは諦めて、マルチ文字コード対応な外部コマンドを使う方が良いかもしれない。

参考

Find-String コマンドレット (高機能なSelect-String)

PSコマンドレットの出力を検索する場合

where-objectコマンドレット

 ls | grep ".txt"                # Bash
 dir | where Name -Like "*.txt"  # PowerShell
 dir | ? { $_.LastWriteTime -gt "2013-07-01" -and $_.LastWriteTime -lt "2013-07-31" }

where-objectについて詳しくは別ページを参照の事。

PSコマンドレット以外の出力を検索する場合

 netstat -n | Out-String -Stream | sls "192.168."

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2013-08-02 (金) 03:02:48