Você está muito perto. Deve ser
grep -i '^d[aeiouy].[^']s$' file
Seu número de .
caracteres é demais e você deseja excluir o penúltimo caractere de ser '
. Lembre-se, cada .
é um espaço reservado para um caractere. Se as suas palavras estiverem em texto corrido, você poderá selecioná-las pelos delimitadores de palavras \<
e \>
, mas poderá ter que usar egrep
para isso. Se você quiser extrair todas as palavras em texto que atende ao seu critério, use:
sed 's/[[:space:]][[:space:]]*/\
/g' foobar | grep "^[dD][aeiouy].[^']s$"
sed
permite que você separe todas as palavras em uma linha sozinha. Observe a nova linha após \
na primeira linha.