Следующая программа awk
сохраняет подсчет того, сколько раз встречается каждый набор из трех последовательных слов (после удаления знаков пунктуации ), и печатает подсчеты и набор слов в конце, если подсчет больше 1:
{
gsub("[[:punct:]]", "")
for (i = 3; i <= NF; ++i)
w[$(i-2),$(i-1),$i]++
}
END {
for (key in w) {
count = w[key]
if (count > 1) {
gsub(SUBSEP," ",key)
print count, key
}
}
}
Учитывая текст в вашем вопросе, получается
2 Search Inside Yourself
2 Cultivate The Three
2 The Three Essential
2 Joy on Demand
2 Recognize and Cultivate
2 Three Essential Virtues
2 and Cultivate The
2 The Ideal Team
3 Ideal Team Player
Как видите, это может быть не так уж полезно.
Вместо этого мы можем собрать ту же информацию о счете, а затем выполнить второй проход по файлу, печатая каждую строку, содержащую тройку слов с числом больше единицы:
NR == FNR {
gsub("[[:punct:]]", "")
for (i = 3; i <= NF; ++i)
w[$(i-2),$(i-1),$i]++
next
}
{
orig = $0
gsub("[[:punct:]]", "")
for (i = 3; i <= NF; ++i)
if (w[$(i-2),$(i-1),$i] > 1) {
print orig
next
}
}
Проверка вашего файла:
$ cat file
The Ideal Team Player
The Ideal Team Player: How to Recognize and Cultivate The Three Essential Virtues
Ideal Team Player: Recognize and Cultivate The Three Essential Virtues
Joy on Demand: The Art of Discovering the Happiness Within
Crucial Conversations Tools for Talking When Stakes Are High
Joy on Demand
Search Inside Yourself: The Unexpected Path to Achieving Success, Happiness
Search Inside Yourself
$ awk -f script.awk file file
The Ideal Team Player
The Ideal Team Player: How to Recognize and Cultivate The Three Essential Virtues
Ideal Team Player: Recognize and Cultivate The Three Essential Virtues
Joy on Demand: The Art of Discovering the Happiness Within
Joy on Demand
Search Inside Yourself: The Unexpected Path to Achieving Success, Happiness
Search Inside Yourself
Предупреждение :Этой awk
программе требуется достаточно памяти, чтобы сохранить текст вашего файла примерно в три раза, и она может найти дубликаты в общих фразах, даже если записи на самом деле не дублируются (, например. «Как готовить» может быть частью названий нескольких книг ).