1. ホーム
  2. regex

[解決済み] grep --ignore-case --only

2022-03-03 10:14:12

質問

grep は --ignore-case と --only-match オプションの両方を使用した場合、失敗します。 例

$ echo "abc" | grep -io abc
abc
$ echo "ABC" | grep -io abc
$ 

しかし

$ echo "abc" | grep -i abc
abc
$ echo "ABC" | grep -i abc
ABC

マニュアルによると

   -o, --only-matching
          Show only the part of a matching line that matches PATTERN.
   -i, --ignore-case
          Ignore case distinctions in both the PATTERN and the input files.

grepのバグなのか、地図ページが表示されなかったのですが?

Mac OS X 10.6.8を使用しています。

$ grep --version
grep (GNU grep) 2.5.1

こんなリンクがありました。 http://lists.gnu.org/archive/html/bug-gnu-utils/2003-11/msg00040.html

もちろん、以下のような回避策を用いることも可能です。 grep -o [aA][bB][cC] しかし、これは良い選択肢ではないようです。

どのように解決するのですか?

これは 既知の バグ は、初期の2.5.1であり、バグレポートによると2007年初頭(Redhat 2.5.1-5)に修正されています。残念ながら、Appleはまだ2.5.1を使っています。 Mac OS X 10.7.2 .

新しいバージョンは、次の方法で入手できます。 ホームブリュー(3.0) または MacPorts (2.26) または fink (3.0-1) .


編集:どうやらOS X 10.11(またはそれ以前)で修正されたようです。ただし、報告されたgrepのバージョンはまだ2.5.1です。