grep:正規表現の問題[閉じる]

grep:正規表現の問題[閉じる]

なぜこれがうまくいかないのかを説明できる人はいますか?

grep -ne '[A-Za-z]{1,30}\ [A-Z][a-z]{1,30}\W[A-Za-z]{1,30}\ [0-9]{1,30}\W[0-9]{5}\ [A-Za-z]{1,30}(\ [A-Za-z]{1,30})?' emails

ベストアンサー1

まず、{}などの拡張正規表現(ERE)構文を使用します。 EREを有効またはエスケープしてバックスラッシュを使用するオプションを追加し、次のように置き換えます。()?-E{}()?grep -ne '[A-Za-z]\{1,30\} [A-Z][a-z]\{1,30\}\W[A-Za-z]\{1,30\} [0-9]\{1,30\}\W[0-9]\{5\} [A-Za-z]\{1,30\}\( [A-Za-z]\{1,30\}\)\{0,1\}' emails

次に、バックスラッシュを使用して一重引用符内のスペースをエスケープします。ほとんどの実装はgrepこれを単純なスペースとして扱いますが、POSIX標準ではそれを未定義と見なします。バックスラッシュ( '\')の後に続く一般文字の解釈は定義されていません。

他に質問があるかもしれませんが、ファイルの構文と必要なものがわからない場合は不明です。grep

おすすめ記事