Mac

grep を使って 1 行、またはファイルやコマンド出力内の任意の場所にある 2 つの文字列を一致させる方法

grep を使って 1 行、またはファイルやコマンド出力内の任意の場所にある 2 つの文字列を一致させる方法

Macターミナルアイコン

コマンドラインのgrepツールは非常に強力で、ファイル内の一致検索、テキストやデータのソート、大きなファイル内の文字列の検索など、様々な用途に便利です。多くのコマンドラインユーザーが遭遇する可能性のある状況の一つは、1行内の2つの異なる文字列をgrepで一致させようとすることです。

これには、MacOS のターミナルで grep を使用できます。また、Linux、Windows WSL、MacOS / Mac OS X の任意のバージョン、さらにはルート化された iOS/iPadOS (そのようなものに興味がある場合) など、他の Unix ベースのコマンド ライン プロンプトでも使用できます。

grepを使用して同じ行にある2つの文字列を一致させる

コマンドラインから、次の構文を試して、同じ行内の 2 つの文字列を grep 一致させてください。
grep "string1" /path/to/file |grep "string2"

たとえば、次のようになります。

grep "error" /var/log/messages |grep "critical"

grep を使用してファイルまたはコマンド出力内の任意の場所にある 2 つの文字列を一致させる

よくある状況として、ファイル内または他のコマンドの出力に含まれる2つの異なる文字列をgrepで一致させる必要がある場合があります。この場合は、次のように -e フラグを使用します。

grep -e String1 -e String2

たとえば、コマンド出力の場合、次のコマンド文字列を使用できます。この場合は、「CurrentCapacity」と「MaxCapacity」が一致します。

ioreg -l| grep -e CurrentCapacity -e MaxCapacity

コマンドラインは上級ユーザー向けですが、grep は非常に寛容なコマンドであり、コマンドラインを初めて使用する場合は、探索して調査するのに適したコマンドです。

また、一致とコマンド出力をさらに絞り込みたい場合は、grep から文字列を除外することもできます。

ファイル内の 2 つの文字列を一致させるか、コマンド出力内の複数の文字列を一致させる別の方法がある場合は、以下のコメント欄で共有してください。