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
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"