Вам нужно будет заключить в кавычки выражение из оболочки:
grep -i '^[^aeiou][aeiou]*$' /usr/share/dict/words
Если вы этого не сделаете, шаблон (s )может быть расширен до имен файлов, существующих в текущем каталоге. Кроме того, поскольку вы вставили пробел в -между двумя частями шаблона, grep
будет думать, что вторая часть является именем файла, который следует искать (, вы получите сообщение об ошибке «Нет такого файла или каталога». ).
В файле /usr/share/dict/words
по одному слову в строке, поэтому вы можете использовать -x
и удалить привязки из выражения, если хотите:
grep -ix '[^aeiou][aeiou]*' /usr/share/dict/words
С -x
grep
будет возвращать только совпадения, охватывающие всю строку.
Если вам требуется гласная (, приведенное выше может возвращать одиночные согласные слова, поскольку [aeiou]*
соответствует пустой строке):
grep -ix '[^aeiou][aeiou][aeiou]*' /usr/share/dict/words
или
grep -Eix '[^aeiou][aeiou]+' /usr/share/dict/words
Следующая команда имитирует вход в систему в bash:
PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7>&2