grep -P は動作しなくなりました。検索を書き換えるにはどうすればいいでしょうか? 質問する

grep -P は動作しなくなりました。検索を書き換えるにはどうすればいいでしょうか? 質問する

新しいバージョンの OS X ではサポートされなくなったようでgrep -P、そのため一部のスクリプトが動作しなくなりました。例:

var1=`grep -o -P '(?<=<st:italic>).*(?=</italic>)' file.txt`

\Kgrep の結果を変数にキャプチャし、ゼロ幅アサーションを使用する必要があります。また、次のことも必要です。

var2=`grep -P -o '(property:)\K.*\d+(?=end)' file.txt`

代替案があれば、ぜひご提示ください。

ベストアンサー1

スクリプトを自分専用にする場合は、grep以下からインストールできます。homebrew-core使用してbrew:

brew install grep 

ggrepその後、 (GNU )として利用できるようになりますgrep。システムを置き換えるものではありませんgrep( のシステム grep の前にインストールした grep を置く必要がありますPATH)。

によってインストールされたバージョンにはオプションbrewが含まれている-Pため、スクリプトを変更する必要はありません。

これらのコマンドを通常の名前で使用する必要がある場合は、次のように bashrc から PATH に「gnubin」ディレクトリを追加できます。

PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"

この行を ~/.bashrc または ~/.zshrc にエクスポートして、新しいセッション用に保持することができます。

参照してくださいここ--with-default-names古いオプションとその(最近の)削除の長所と短所について議論します。

おすすめ記事