私のコンピューターはmacOS 10.12.3を実行しておりgrep
、バージョン2.5.1-FreeBSDでシステムにインストールされたユーティリティを使用しています。
これらは、さまざまな正規表現をテストするときに得られる出力です。
しかし、GNU grep(バージョン2.25)を使用してこれらを実行すると、次の結果が得られます。
GNUのgrepは正しいように見えますが、BSDのgrepは間違っていますか?なぜ違うのですか?正規表現で行の先頭に続く必要があると指定されている場合、BSDのgrepが「a」と一致する理由がわかりません。
2
最初の動作をバグとして報告してください。
—
桂佐藤
あなたはそれ
—
ステファンシャゼラス
echo 'bababa' | grep -E '^(a|b)'
がすべて赤であることがわかります。そして、あなたも同じ問題を抱えてい-o
ます。私は推測しgrep
ますが、複数の一致を探しますが、2回目以降の一致ではanana
、REG_NOTBOLフラグを渡さずに、前回と一致したもの(たとえば、2回目)の右側に正規表現を適用します。参照echo banana | grep -Eo '^ban|^ana$'
私のOS Xの@JdeBPは、「GNUバージョンとの互換性のために提供される長いオプション」に言及するだけで、GNUを参照するマニュアルページと
—
イルッカチュ
grep
同じように自分自身を識別しgrep (BSD grep) 2.5.1-FreeBSD
ます。また、著作権表示もGPL(またはFSF)の言及もありません。GNU utilの歴史がある場合、それを伝えるのは困難です。
これがいかに誤解を招くかを示しています。(-:
—
JdeBP
grep
多くの人が正しいと考えているDecade Moonの回答で議論されていることはgrep (GNU grep) 2.5.1-FreeBSD
(バグの議論で見られるように)正しいと特定し、FSF著作権表示を持ち、そして間違いなくGNU grep
です。FreeBSDが呼ぶbsdgrep
ものはOpenBSDです通話grep
やBSDあるgrep
なしで、--color
FreeBSDのバリアントoutwithオプション何識別などである。grep (BSD grep) 2.5.1-FreeBSD
バグ議論中1人はそのFreeBSDのスイッチを提案するものであり、皮肉なことgrep
に。