У меня возникла проблема с использованием регулярных выражений с awk. В частности мне нужно найти все слова в файле, которые:
- начинаются с "un";
- длиной не менее 6 символов
- заканчивается двумя гласными
(эти условия должны быть проверены одновременно).
Я использовал это регулярное выражение
cat file.txt | awk '{ for(k=1; k<=NF; k++)
if ($k ~ /^un.{2,}[aeiouAEIOU]{2}$/ )
print $k; }'
Проблема в том, что иногда работает, а иногда нет.
Я пробовал это с двумя файлами:
test.txt
unaaaiuolaa
unaaaaaa
unbbaa
file.txt
unaaaiuolaa
unarmadio
Таинственно, регулярное выражение соответствует всем словам в первом файле, но только «unarmadio» в file.txt (обратите внимание, что «unaaaiuolaa» одинаково в обоих файлах).
Может кто-нибудь объяснить мне, почему?