私が知る限り、そうではありません。GNU grep バージョン 2.5.3、2.6.3、2.10、および 2.12 では、次のようになります。
$ echo "ABC ddd kkk DDD" | grep -Eo "[A-Z]+"
ABC
DDD
$ echo "ABC ddd kkk DDD" | grep -Eo "[A-Z]*"
ABC
DDD
2 番目の例を再確認してください。出力が 1 行しかないことを確認できる場合は、grep
. GNU を使用している場合grep
、出力はgrep --version
何ですか? そうでない場合は、どの OS を使用していますか? (知っている場合) どのようなgrep
実装をしていますか?
アップデート :
ソースから GNU grep 2.5.1 (使用しているバージョン) をビルドしてインストールし、出力を確認しました。これは のそのバージョンのバグのようでgrep
、明らかに 2.5.1a から 2.5.3 の間で修正されています。GNU grep 2.5.1 は約 12 年前のものです。新しいバージョンをインストールできますか? 2.5.3ChangeLog
を調べると、これが修正された可能性があると思われます。
2005-08-24 Charles Levert <charles_levert@gna.org>
* src/grep.c (print_line_middle): In case of an empty match,
make minimal progress and continue instead of aborting process
of the remainder of the line, in case there's still an upcoming
non-empty match.
* tests/foad1.sh: Add two tests for this.
* doc/grep.texi, doc/grep.1: Document this behavior, since
--only-matching and --color are GNU extensions which are
otherwise unspecified by POSIX or other standards.
使用しているマシンにフル アクセスできない場合でも、ソース tarball をダウンロードしてftp://ftp.gnu.org/gnu/grep/
、ホーム ディレクトリにインストールすることができます (システムに動作するコンパイラと関連ツールがあると仮定します)。