Ради интереса я искал словарь для слов, которые sed
мог бы использовать для изменения строк.Пример:
sed settee <<< better
sed statement <<< dated
Выходы:
пиво
сумасшедший
Эти sed
s
слова должны быть не менее 5 букв длиной и начинаются с s
, затем еще одна буква, которая может появляться только 3 раз, по крайней мере с одной другой буквоймежду первым и вторым экземплярами и с третьим экземпляром в качестве последней буквы.
Я использовал sed
для генерации списка слов, и, похоже, он работает:
d=/usr/share/dict/american-english
sed -n '/^s\([a-z]\)\(.*\1\)\{2\}$/{
/^s\([a-z]\)\(.*\1\)\{3\}$/!{/^s\([a-z]\)\1/!p}}' $d |
xargs echo
Вывод:
санатории санатории саркомата саванна отдел секретный секретный сегрегация выборочное предложение предложение setimentize septette последовательность серенада безмятежный серпантин пригодный для обслуживания ведомая дивизия разъединение тяжелая канализация секстетт самое лучшее утверждение самый незаметный самый строгий из самых строгих стрижек * самый строгий из самых строгих стрейджетов
Но этот код sed
проходит три прохода через каждую строку, что кажется чрезмерно длинным изапутано.Как можно упростить этот код, при этом выводя тот же список слов?
grep
или awk
ответы также будут в порядке.