8

unix (bash) で egrep (または grep -e) を使用して、ファイル内で繰り返される単語を見つける必要があります。

私は試した:

egrep "(\<[a-zA-Z]+\>) \1" file.txt

egrep "(\b[a-zA-Z]+\b) \1" file.txt

しかし、何らかの理由で、これらはそうではない繰り返しであると見なされます! たとえば、単語境界条件\> orにもかかわらず、文字列 "word words" が基準を満たしていると見なし\bます。

4

4 に答える 4

3

私が使う

pcregrep -M '(\b[a-zA-Z]+)\s+\1\b' *

ドキュメントにそのようなエラーがないかチェックします。これは、重複した単語の間に改行がある場合にも機能します。

説明:

  • -M, --multiline複数行モードで実行します (重複する単語の間に改行がある場合は重要です。
  • [a-zA-Z]+:単語に一致
  • \b: 単語境界、チュートリアルを参照
  • (\b[a-zA-Z]+)グループ化する
  • \s+少なくとも 1 つ (ただし、必要なだけ多く) の空白文字に一致します。これには改行が含まれます。
  • \1: 最初のグループにあったものに一致
于 2017-01-12T11:07:53.133 に答える