Мне нужно найти список из 5 буквенных слов, начинающихся с d (верхний или нижний регистр), а затем строчный гласный, включая y, и конец с s. Моя команда: имя файла grep -i '^ d [aeiouy] …. s $'. Я хочу исключить слова из s из моего списка, но я не знаю, как написать команду.
Чтобы избежать привязки ^$
вы можете использовать опцию -x
.
d
может быть верхним или нижним, но гласный просто низкий
\B
означает null inside of word
поэтому предыдущий символ не является символом препинания или пробелом:
grep -x '[Dd][aeiouy]..\Bs' file
Вы очень близки. Должен быть
grep -i '^d[aeiouy].[^']s$' file
Ваш номер .
символов слишком много, и вы хотите исключить предпоследний символ из '
. Помните, каждый .
является заполнителем для одного символа. Если ваши слова находятся в рабочем тексте, вы можете выбрать их с помощью разделителей слов \<
и \>
но для этого может потребоваться использовать egrep
. Если вы хотите извлечь все слова в тексте, отвечающем вашему критерию, то вы должны использовать:
sed 's/[[:space:]][[:space:]]*/\ /g' foobar | grep "^[dD][aeiouy].[^']s$"
sed
позволяет вам отделить все слова от одной строки. Обратите внимание на новую строку после \
на первой строке.
Вы можете попробовать следующее: grep -i "^d[aeiouy]...[^']s$" <file name>
. Он исключает '
персонаж из последней позиции».