我想从一个看起来像这样的巨大文件中提取出来:
.....
G: Quantity 000001, removing 4 binary files
A: some stuff
.....
G: some other stuff
G: some infos
.....
G: Quantity 000002, removing 1 binary files
....
A: some data
....
G: Quantity 000003, removing 41 binary files
.....
所有行“G:数量??????,删除*二进制文件”。
我正在用bash语法编写这个模式,因为它是我最熟悉的那个,但是grep并不像bash那样解释我的问号和星号。什么是相应的grep语法?
以下语法有效:
grep "G:" filename | grep Quantity | grep removing
但它不使用任何正则表达式。
答案 0 :(得分:2)
在正则表达式中,匹配任何字符的方法是使用.
。
如果您想要与任何字符完全匹配N次,请说.{N}
。如果您想匹配至少一个,请说.+
。在这种情况下,您希望匹配数字,最好说[0-9]
而不是过于通用的.
:
grep -E 'G: Quantity [0-9]{6}, removing [0-9]+ binary files' file
此命令返回:
G: Quantity 000001, removing 4 binary files
G: Quantity 000002, removing 1 binary files
G: Quantity 000003, removing 41 binary files