Regex grep中的多重表达

Regex grep中的多重表达,regex,linux,grep,Regex,Linux,Grep,我想找到那一行 以“partition”(该单词前面的空格是ok)开头 后面的行将只包含“')”(允许空白) 我设法做到了这一点: grep -B1 ')' file.log | grep 'partition' 我相信我缺少的是如何在第一个grep命令中添加另一个表达式。这样我就可以加上“不等于”(“) file.log parameters ('storage "IDXD_ITEM_LOAN_S0007"'), partition "P_ITEM_LOAN_0000000221" p

我想找到那一行

  • 以“partition”(该单词前面的空格是ok)开头
  • 后面的行将只包含“')”(允许空白)
  • 我设法做到了这一点:

    grep -B1 ')' file.log | grep 'partition'
    
    我相信我缺少的是如何在第一个grep命令中添加另一个表达式。这样我就可以加上“不等于”(“)

    file.log

     parameters ('storage "IDXD_ITEM_LOAN_S0007"'),
     partition "P_ITEM_LOAN_0000000221"
     parameters ('storage "IDXD_ITEM_LOAN_S0008"'),
     partition "P_ITEM_LOAN_0000000231"
     parameters ('storage "IDXD_ITEM_LOAN_S0009"'),
       partition "P_ITEM_LOAN_0000001831"
     parameters ('storage "IDXD_ITEM_LOAN_S0010"')
     )
    /
    
     parameters ('storage "IDXD_ITEM_LOAN_S0007"'),
     partition "P_ITEM_LOAN_0000000221"
     parameters ('storage "IDXD_ITEM_LOAN_S0008"'),
     partition "P_ITEM_LOAN_0000000231"
     parameters ('storage "IDXD_ITEM_LOAN_S0009"'),
     partition "P_ITEM_LOAN_0000001832"
     )
    /
    
    
     parameters ('storage "IDXD_ITEM_LOAN_S0007"'),
     partition "P_ITEM_LOAN_0000000221"
     parameters ('storage "IDXD_ITEM_LOAN_S0008"'),
     partition "P_ITEM_LOAN_0000000231"
     parameters ('storage "IDXD_ITEM_LOAN_S0009"'),
      partition "P_ITEM_LOAN_0000001833"
    )
    /
    
     parameters ('storage "IDXD_ITEM_LOAN_S0007"'),
     partition "P_ITEM_LOAN_0000000221"
     parameters ('storage "IDXD_ITEM_LOAN_S0008"'),
     partition "P_ITEM_LOAN_0000000231"
      parameters ('storage "IDXD_ITEM_LOAN_S0009"'),
       partition "P_ITEM_LOAN_0000001834"
         )
    /
    
    期望输出

    partition "P_ITEM_LOAN_0000001832"
    partition "P_ITEM_LOAN_0000001833"
    partition "P_ITEM_LOAN_0000001834"
    
    如果你想去掉前导空格,你可以通过sed管道你可以使用
    grep-p(PCRE)


    我不按顺序问。这就是为什么我相信只有grep才能完成。我尝试了
    -v
    ,得到了奇怪的结果。无论如何,从您的示例文件中,您只需使用
    cat file.txt | grep“分区”就可以得到所需的内容
    Ahn抱歉,现在我明白了!不,它返回所有
    分区
    行通过搜索其他内容来解决它。现在我搜索
    /
    而不是
    ,在grep中我使用
    -B2
    类似的内容
    cat file.txt | grep-B2”/“| grep”分区“
    Nice!干得好,有用。谢谢
    grep -PB1 '\s\)|^\)' tst.txt | grep 'partition'
    
    grep -P '^ *partition(?=.*?\n *\) *\n)' file.log 
     partition "P_ITEM_LOAN_0000001832"
      partition "P_ITEM_LOAN_0000001833"
       partition "P_ITEM_LOAN_0000001834"