grep - 如何grep包含可选单词?

标签 grep

我使用以下grep查询来查找VB源文件中函数的出现。

    grep -nri "^\s*\(public\|private\|protected\)\s*\(sub\|function\)" formName.frm


这符合-

    Private Sub Form_Unload(Cancel As Integer)
    Private Sub lbSelect_Click()
    ...


但是,它错过了-

   Private Static Sub SaveCustomer()


因为里面有额外的单词“ Static”。如何在grep查询中解决这个“可选”字词?

最佳答案

您可以使用\?使某些内容可选:

grep -nri "^\s*\(public\|private\|protected\)\s*\(static\)\?\s*\(sub\|function\)" formName.frm


在这种情况下,包含字符串“ static”的前面的组是可选的(即可能出现0或1次)。

关于grep - 如何grep包含可选单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142314/

相关文章:

linux - Grep 特定单词第一次匹配后的所有行。输出应排除匹配行

grep - 提取所选字母的相邻字符

regex - 如何 grep 包含两次或多次列出特定字母的单词列表?

linux - 多个 grep 管道(包含+排除)导致不显示任何内容

linux - 搜索非 ascii 字符

regex - 只打印匹配正则表达式的部分

regex - 使用 grep 查找字符串模式

curl - 在 Golang 中使用 curl 在网站上搜索字符串最有效和可扩展的等价物是什么?

linux - 为什么 grep 在用作变量时有效,而在 linux shell 脚本中用作函数时却无效?

shell - AIX:使用 grep 命令记录文件中的两行