web-dev-qa-db-ja.com

Mac OS Xに、複数行の正規表現検索を実行できるコマンドはありますか?

単一行に制限されていないディレクトリを介して、単純な正規表現検索を再帰的に実行したいと思います。

Grepとackを試しましたが、どちらもこれをサポートしていないようです。

私が選んだテキストエディタ( Sublime Text )で問題なく実行できるので、(私の場合は)計算コストがかかりすぎないようにする必要があります。

これの単純なコマンドラインバージョンを探しています。 Googleは pcregrep になりましたが、Macではそれが見つからないようです。私はちょうど正しい場所を探していませんか?

12
Dan Tao

Homebrewをインストールしてから:

brew install pcre

これにより、最新のpcregrepが提供されます

15
Tobia

あなたはあなたが探しているものを正確に言っていなかったので、改行を無視して、ファイルに112の後に223が含まれているかどうかを調べるタスクを想像します。

少し工夫されたawkソリューション:

awk -vRS='' '/112.*223/ { print "found it"; exit }' file.in

RS変数には、レコード区切り文字が含まれています。空の文字列に設定すると、ファイル全体が1つのレコードとして読み取られます。

これは、大きなファイルではおそらくメモリ効率が非常に悪くなります。

ちなみに、私はこれをOpenBSDで行っていますが、OS Xawkも同じように機能するはずです。

1
Kusalananda

「pcregrep」は、古い安定版pcregrepと新しいpcre2grepを指す場合があります。どちらも pcre.orgのPCREプロジェクト によって提供されます。

Mac Ports は、前者をポートpcre(バージョン8.40で安定)の一部として提供し、後者をポートpcre2(現在のバージョン10.22)の一部として提供します。経由でインストール:

% Sudo port install pcre2
0
Jim DeLaHunt