我需要找到以 d(大写或小写)开头,后跟包括 y 在内的小写元音并以 s 结尾的 5 个字母单词的列表。我的命令:grep -i '^d[aeiouy]....s$' 文件名。我想从列表中排除带有 's 的单词,但我不知道如何编写命令。
答案1
你们非常接近。它应该是
grep -i '^d[aeiouy].[^']s$' file
您的字符数.
太多,并且您想排除倒数第二个字符'
。请记住,每个.
都是一个字符的占位符。如果您的单词在运行文本中,您可以通过单词分隔符来选择它们\<
,\>
但可能必须使用egrep
它。如果你想提取运行文本中符合你的标准的所有单词,那么你应该使用:
sed 's/[[:space:]][[:space:]]*/\
/g' foobar | grep "^[dD][aeiouy].[^']s$"
sed
允许您单独分隔一行上的所有单词。注意\
第一行后面的换行符。
答案2
为了避免锚点,^$
您可以使用-x
选项。
d
可以是大写或小写,但元音只是小写
\B
意味着null inside of word
前面的符号不是任何标点符号或空格:
grep -x '[Dd][aeiouy]..\Bs' file
答案3
你可以试试这个:grep -i "^d[aeiouy]...[^']s$" <file name>
。它将'
角色从最后一个位置中排除。