- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PowerShell/UNIX系コマンド群との対応/grep へ行く。
- 1 (2013-07-18 (木) 16:55:05)
- 2 (2013-07-18 (木) 16:55:15)
- 3 (2013-07-25 (木) 00:53:41)
- 4 (2013-07-29 (月) 07:58:34)
grep
テキストファイルの中の文字列を検索する場合
Select-Stringコマンドレット
Select-String "taro" user.txt sls taro user.txt # エイリアス
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は諦めて、マルチ文字コード対応な外部コマンドを使う方が良いかもしれない。
- jvgrep等は使いやすい。https://github.com/mattn/jvgrep/releases
参考
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."