sで終わる単語は除外しますが、sで終わる単語は除外します。

sで終わる単語は除外しますが、sで終わる単語は除外します。

d(大文字または小文字)で始まり、その後にyを含む小文字の集まりが続き、sで終わる5つの単語のリストを見つける必要があります。私のコマンド: grep -i '^d[aeiouy]....s$' ファイル名。 'を含む単語をリストから除外したいのですが、コマンドをどのように書くべきかわかりません。

答え1

あなたは非常に近いです。しなければならない

grep -i '^d[aeiouy].[^']s$' file

文字が多すぎて、.最後の文字から2番目の文字を除外しようとしています'。それぞれが.キャラクターのプレースホルダーであることを覚えておいてください。単語が実行中のテキストにある場合は、単語区切り文字として選択できますが、\<使用する\>必要があるかもしれませんegrep。実行中のテキストから条件に一致するすべての単語を抽出するには、以下を使用する必要があります。

sed 's/[[:space:]][[:space:]]*/\
/g' foobar | grep "^[dD][aeiouy].[^']s$"

sed1行のすべての単語を個別に区別できます。\最初の行の後の改行文字に注意してください。

答え2

アンカーポイントを避けるためにオプションを^$使用できます-x
d大文字でも小文字でも構いませんが、コレクションのみが小文字の場合は、前の記号が句読点やスペースではないことを
\B意味します。null inside of word

grep -x '[Dd][aeiouy]..\Bs' file

答え3

以下を試してみてくださいgrep -i "^d[aeiouy]...[^']s$" <file name>'最後の位置の文字を除外します。

関連情報