Обычной ошибкой при написании больших объемов литературного текста является случайное повторение слов. Вы часто можете увидеть в тексте что-нибудь подобное такому: "the the program does the following . . . ." Когда текст расположен на экране, часто повторяющиеся слова попадаются в конце одной строки и начале следующей, делая их трудно обнаруживаемыми. Предлагаемая программа, `dupword.awk', просматривает файл по одной строке за раз и ищет соседние вхождения одинаковых слов. Она также запоминает последнее слово строки (в переменной prev) для сравнения с первым словом в следующей строке. Первые два оператора обеспечивают для строк нижний регистр, так что, например, "The" и "the" считаются равными друг другу. Второй оператор удаляет все небуквенные, нецифровые и не-whitespace символы из строки, так что пунктуация не влияет на сравнение. Это иногда приводит к указанию двойных слов, которые на самом деле различны, но такие случаи редки.
# dupword --- находит повторные слова в тексте
# Arnold Robbins, arnold@gnu.org, Public Domain # December 1991
-
$0 = tolower($0) gsub(/[^A-Za-z0-9 "t]/, ""); if ($1 == prev)
printf("%s:%d: duplicate %s"n",
FILENAME, FNR, $1) for (i = 2; i != NF; i++)
if ($i == $(i-1))
printf("%s:%d: duplicate %s"n",
FILENAME, FNR, $i) prev = $NF ""