
文字列 "tt"を含む行を選択するだけのテキストファイルがあります。だから私はコマンドラインで次のことを試しました。
grep "t{2}" textfile
テキストファイルに「rotten」「litter」などの単語が含まれていることはわかっていますが、grepコマンドは行を表示せずにステータス1で終了します。
私は別の一般的なパターンを試しました。
grep "a.*x" textfile
これにはうまくいきます。
答え1
基本的に、grep使用基本正規表現、grepが複数の文字と一致するようにするには、中かっこをエスケープする必要があります。
grep 't\{2\}' textfile
または、このオプションを使用できます-E
(またはGNU grepの-Pオプション、これPerl互換正規表現)grep
使用拡張正規表現、エスケープなしで中括弧を使用できます。
grep -E 't{2}'
答え2
中かっこをエスケープする必要があります。
grep 't\{2\}' textfile
それ以外の場合は{
リテラル}
文字として扱われます。
答え3
-E
(--extended-regexp
)または-P
()オプションを使用する必要があります--perl-regexp
(GNU grepを使用)。
GNU grep(1) のマニュアルページによると基本正規表現と拡張正規表現つまり、次のオプションを使用しないことを選択した場合:
基本正規表現では、メタ文字?、+、{、|、(および)はバックスラッシュバージョン\?、\+、\{、\|、\(および\)の代わりに特別な意味を失います。