PowerShell から検索テキストを取得するには?

PowerShell から検索テキストを取得するには?

grep は Linux の強力なテキスト検索ユーティリティですが、Windows では利用できません。サード パーティのポートとソリューションが存在しますが、PowerShellgrep には、スクリプトで同じ機能を実行する同等の機能が組み込まれています。

findstr を使用して PowerShell で検索する

PowerShell にはいくつかの異なる検索ユーティリティがあり、それぞれに独自の長所があります。最も単純なのはfindstr、ネイティブの Windows 実行可能ファイルです。これは、コマンド ラインでの単純な検索操作のために grep を置き換えるのに適しています。たとえば、出力を渡しls て一致を探すことができます。

ls | findstr "foo"

一度に複数の単語を検索したり、ワイルドカードを使用して何かに一致させたり、/R フラグを使用して基本的な正規表現を渡したりすることもできます。

ls | findstr /R ba[a-z]\.txt

/C: ただし、スペースを含めて明示的に検索する場合は、次のフラグを使用する必要があります。

ls | findstr /C:"foo"

Linux コマンド ラインに慣れていて、新しいコマンドを覚えたくない場合は、”grep” を のエイリアスとして設定できfindstrます。これにより、筋肉の記憶を節約できます。

new-alias grep findstr

PowerShell で Select-String を使用して grep を検索する

PowerShell が提供するもう 1 つのネイティブ メソッドはSelect-String コマンドレットです。これは多くの点で似ていますfindstrが、Windows 実行可能ファイルではなく PowerShell コマンドレットです。

これは、PowerShell スクリプトでより適切に機能することを意味し、最も重要なことは、PowerShell で美しく印刷できるオブジェクトとして出力を返すことです。また、PowerShell のタブ補完が機能するため、コマンド ラインでの使用も簡単です。

同じfindstrように機能し、ワイルドカードと正規表現を受け入れることができます。

ls | Select-String fools | Select-String -Pattern <regexPattern>

 引数をSelect-String 渡すことにより、ファイル内のテキストを検索するために使用できます。-Pathなどの他のコマンドレットから渡された入力で使用することもできますGet-Content

Select-String -Path ".\foo.txt"-Pattern ba.*

コマンド ラインで使用する場合は、”grep” エイリアスを使用してすばやくアクセスすることもできます。

remove-alias grep

new-alias grep Select-String

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です