用于查找单词的 grep 模式语法

用于查找单词的 grep 模式语法

我试图找到我的名字首字母不一定连续出现的所有单词。

我的第一个首字母应该开始这个词。

我的最后一个首字母应该结束这个词。

我的中间首字母位于单词之间

代码:

grep '^j.*x$' file

( j 是第一个声母,t 是中间词,x 是单词的结尾)

答案1

好吧,你会从

j.*t.*x

但这些.*位会匹配任何事物。因此,将这些部分限制为仅匹配字母:

j[[:alpha:]]*t[[:alpha:]]*x

[[:alpha:]]是一个 POSIX 字符类大致与 相同[A-Za-z],即任何字母字符。

这就是你的模式。然后grep礼貌地要求只返回完整的单词。您可以使用选项来做到这一点-w。这会将匹配限制为每行上由非单词字符(例如空格)或行首或行尾分隔的子字符串。

-i如果您想进行不区分大小写的匹配,请添加。

如果您只想要每行中与模式实际匹配的位而不是整行,请另外使用-o.

你最终会得到

grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x'

测试:

$ grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x' /usr/share/dict/words
janitrix

相关内容