このBSD grepの結果がGNU grepと異なるのはなぜですか?


13

私のコンピューターはmacOS 10.12.3を実行しておりgrep、バージョン2.5.1-FreeBSDでシステムにインストールされたユーティリティを使用しています。

これらは、さまざまな正規表現をテストするときに得られる出力です。

スクリーンショット

しかし、GNU grep(バージョン2.25)を使用してこれらを実行すると、次の結果が得られます。

スクリーンショット

GNUのgrepは正しいように見えますが、BSDのgrepは間違っていますか?なぜ違うのですか?正規表現で行の先頭に続く必要があると指定されている場合、BSDのgrepが「a」と一致する理由がわかりません。


2
最初の動作をバグとして報告してください。
桂佐藤

1
あなたはそれecho 'bababa' | grep -E '^(a|b)'がすべて赤であることがわかります。そして、あなたも同じ問題を抱えてい-oます。私は推測しgrepますが、複数の一致を探しますが、2回目以降の一致ではanana、REG_NOTBOLフラグを渡さずに、前回と一致したもの(たとえば、2回目)の右側に正規表現を適用します。参照echo banana | grep -Eo '^ban|^ana$'
ステファンシャゼラス

2
私のOS Xの@JdeBPは、「GNUバージョンとの互換性のために提供される長いオプション」に言及するだけで、GNUを参照するマニュアルページとgrep同じように自分自身を識別しgrep (BSD grep) 2.5.1-FreeBSDます。また、著作権表示もGPL(またはFSF)の言及もありません。GNU utilの歴史がある場合、それを伝えるのは困難です。
イルッカチュ

これがいかに誤解を招くを示しています。(-:grep多くの人が正しいと考えているDecade Moonの回答で議論されていることはgrep (GNU grep) 2.5.1-FreeBSD(バグの議論で見られるように)正しいと特定し、FSF著作権表示を持ち、そして間違いなくGNU grepです。FreeBSDが呼ぶbsdgrepものはOpenBSDです通話grepやBSDあるgrepなしで、--colorFreeBSDのバリアントoutwithオプション何識別などである。grep (BSD grep) 2.5.1-FreeBSDバグ議論中1人はそのFreeBSDのスイッチを提案するものであり、皮肉なことgrepに。
JdeBP

回答:


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