文字クラス正規表現難読化

文字クラス正規表現難読化

grepで正規表現を省略しようとしています。正確に6つのスペースとアルファベット文字が一致する必要があります。これは働きます:

grep "^\s\s\s\s\s\s[[:alpha:]]" <filename>

以下は行われません。

grep "^[[:space:]]{6}[[:alpha:]]" <filename>

私は何が間違っていましたか?

答え1

{6}基本正規表現に影響を与えない拡張正規表現「バインディング」({6}文字通り一致)。このgrepユーティリティはデフォルトでデフォルトの正規表現を使用します。

2つの解決策:

  1. 逆の場合は、デフォルトの\{6\}正規表現として書くことができます。
  2. を使用grep -Eしてを許可しますgrep

[[:space:]]または、スペース(他の文字を除く、\sGNUではgrepスペース、垂直/水平タブ、フォームフィード、改行、およびキャリッジリターン)を一致させるには、リテラルスペースを使用します。例えば、

grep -E '^ {6}[[:alpha:]]'

関連:

答え2

Kusalanandaが言ったことに加えて、これはフラグegrepを扱いたくない場合に機能します。-E

関連情報