我正在尝试弄清楚如何在 grep 中列出连续字母。例如,如果我想在一行中列出所有包含两个连续 a 或 i 或 u 的单词,我该怎么做?
据我理解,该命令看起来像 egrep [a]{2} | egrep [i]{2} | egrep [u]{2}
但是,如果单词中有 aa 和 ii 或任何其他连续两个字母的组合,该怎么办?
答案1
您的问题中实际上有三个单独的命令:它将搜索具有 的任何内容aa
,然后将这些结果传递给下一个egrep
搜索具有 的任何内容的命令ii
,然后将这些结果传递给最后一个egrep
搜索 的命令。因此,您最终只得到包含所有三个组合、、uu
的行aa
ii
和 uu
。
你只需要使用一 egrep
命令,使用带交替的正则表达式:
egrep 'aa|ii|uu'
这将匹配所有包含aa
、ii
或 的行uu
。
答案2
你不能。Regex 仅适用于正则表达式。你会注意到正则表达式没有任何类型的内存(因此不能说 (.*)*2 或类似的东西)。你正在寻找一个有限原子或图灵机。