grepを使用して単語構造を検索する

grepを使用して単語構造を検索する

一部の英語の単語には、「tomorrow」や「better」などの「abba」構造が含まれています。与えられたファイルにそのような単語を含む行はいくつですか? grepを使ってこれらの単語を検索するには?

答え1

GNU grepでこれを試してください:

grep '\(.\)\(.\)\2\1' file | wc -l

答え2

似合うパターンをお探しの方回門- または同じ単語を前後に綴る場合 - GNUページを開き、次を見つけることもできgrepますinfo grep

Guglielmo Bondioniは、最大19文字のすべての回文を見つけるために9つのサブ式と9つの逆参照を使用するREを提案しました。

grep -xE '(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\9\8\7\6\5\4\3\2\1'

これはGNU ERE拡張を使用して行われ、他の実装には移植できませんgrep

...今一致しますアバ、しかしtomorrowまたはbetterこれら二つの言葉は両方ではないから回門

移植性に関する注意事項は、特に拡張正規表現パターンで逆参照を使用することを意味すると思います。\{0,1\}完全に移植可能な式モードを取得するには、各疑問符を置き換えるには、より多くのバックスラッシュとaが必要だと思います。

答え3

grep -xE '.+(.)(.)\2\1.+'
grep -xE '(.)(.)\2\1'

関連情報