正規表現を使用してファイルに複数回現れる文字を見つけることは困難です。

正規表現を使用してファイルに複数回現れる文字を見つけることは困難です。

任意のコードを含むファイルがあります。各コードには10個の文字があり、ファイル内でその文字が複数回表示されるコードを見つけようとします。私はこれをやっています:

grep DD* [filename]

これにより、文字「D」が2回表示されるコードが検索されますが、「D」が1回表示されるコードも表示されます。 2回発生するコードのみを表示するように正規表現をどのように変更できますか?

答え1

*正規表現は、前のエンティティが0回以上繰り返されることを示す数量子です。

数量子を削除します。

grep DD filename

上記は、「D」が3回以上表示される行とも一致します。

「D」だけでなく、任意の文字が複数回必要な場合:

grep -E '(.)\1' filename

「D」が正確に2回必要な場合:

grep -E '([^D]|^)DD([^D]|$)' filename

関連情報