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


12

単一行に制限されていないディレクトリを単純に正規表現で検索したいです。

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

私の選択したテキストエディタ(Sublime Text)で問題なく処理できるため、(私の場合は)計算コストが高すぎてはいけないことを知っています。

この単純なコマンドラインバージョンを探しています。Googleはpcregrepを公開しましたが、Macでそれを見つけることができないようです。適切な場所を見ていませんか?


1
探しているものの例を挙げておくと役立ちます。そして、んgrep、あなたは(あなたが欲しいものを見つけるのコンテキストヘルプを-C1)?
mbb

回答:


15

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

brew install pcre

これにより、最新の pcregrep


1

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

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

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

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

これはおそらく、大きなファイルでは非常にメモリ効率が悪いでしょう。

ところで、私はOpenBSDでこれを行っていますが、OS X awkも同じように動作するはずです。


OS X 10.11.2を使用していますが、「awk:invalid -v option」
-HaggleLad

OS Xでは、vとの間にスペースが必要RSです。すなわちawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
ニール

0

「pcregrep」は、古い安定版pcregrepと新しい安定版を参照できますpcre2grep。どちらも、PCREプロジェクトpcre.orgによって提供されています。

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

% sudo port install pcre2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.