grep コマンドは、-Pz を使用する場合、'^' および '$' 行末アンカーの開始をサポートしません。

grep コマンドは、-Pz を使用する場合、'^' および '$' 行末アンカーの開始をサポートしません。

引用するAUのQ&A

grepパラメータを使用したGNUの動作が変更され、行アンカーの開始と終了をサポート-Pzしないのはなぜですか?^$

これは間違いか正しい行動ですか?

Ubuntu 16.04でテストされており、カーネルバージョンは4.4.0-21-genericです。

$ echo ^ | grep -Pz ^
grep: unescaped ^ or $ not supported with -Pz

答え1

これはGNU grepバージョン2.24(2016年3月10日リリース)以降で予想される動作であり、GNU grep 2.5で導入されたバグに対する修正です。

ソースコードを見る:

if (*p == '$' || (*p == '^' && !after_unescaped_left_bracket))
  die (EXIT_TROUBLE, 0,
       _("unescaped ^ or $ not supported with -Pz"));

2016年2月21日に変更されました。このバグレポートこの変更の詳細は次のとおりです。


GNU grepオプションですが、GNU grepのためにバグです。PCRE_MULTILINEPCRE正規表現をコンパイルするには、setを使用してください。また、複数のレコードを一度に処理するためにpcre_exec呼び出しに戻りました。、これが問題の源です。指摘したとおり渡すスティーブン・チャジェラス

関連情報