PowerShellでgrep


Windows使用中にgrepのようなテキストの中から抜き出す系のコマンドを使用したくなることがあった。 busybox-w32やripgrep等を試したがシェル上の日本語の取り扱いに難があり、標準で付属するPowerShellコマンドに落ち着いた。

grep

grepと似たようなことを行いたいときは以下のコマンドを使う。 リファレンス

# 普通のgrepに相当
cat "./example.txt" |  Select-String "検索文字列" | % { $_.ToString() } > "./output.txt"
# -v (--invert-match)に相当
cat "./example.txt" |  Select-String  -NotMatch  "除外文字列" | % { $_.ToString() } > "./output.txt"

% { $_.ToString() }がミソである。 これがないとターミナルの大きさに合わせて勝手に改行が付与されてしまう。

tr

文字列の置換を行う場合は以下のようにできるっぽい。 このサイトが 参考になった。

cat "./example.txt" | % { $_ -creplace "", "Hoge" } | % { $_.ToString() }

-creplace のcは大文字小文字を区別するという意味。

もどる


かもめ - Make / Walk / Others / About