
私が読んだ多くの文書によると、次のコマンドはxが連続して3回以上、4回以下で表示される行と一致する必要があります。
grep -E {x}\{3,4}
例えばhttp://www.delorie.com/gnu/docs/grep/grep_7.htmlまたはhttp://www.google.com/support/enterprise/static/postini/docs/admin/en/admin_ee_cu/cm_regex.html
おそらく、これは一致するものが返されないことを意味します。
xxxxx
xxxxxx
しかし、テストファイルを作成してこのコマンドを実行しました。
grep -o -E [x]\{3,4} testfile
次の出力を返しました。
xxxx
xxxx
2行が一致します。どうなりますか?これがSolarisのbashシェルの外観です。
答え1
まず、どの特殊文字を使用してシェルが何をしているのかを覚えるのは痛いので、常にgrep式を引用する必要があります。
grep -o -E '[x]{3,4}' testfile
第二に、最小限の一致が見つかります。非常に簡単なので、より長い実行にわたって3〜4つの実行を一致させることをお勧めしgrep
ます。これが発生しないようにするには、ある種の境界条件が必要です。x
x
いいえ長距離ランニングのサブセットを一致させます。 PCREをサポートしているユーザーは、grep
幅0のツアーを使用してこれを達成できます。
(echo xxx; echo xxxxxx) | grep -P '(?<!x)xxx(?!x)'