grep那些包含单引号的匹配行

时间:2018-03-08 08:45:05

标签: regex linux grep

我想匹配那些词语:

{'ID': 'X.id: 4243.4, Y.id 534534', 'text': 'text - text'}
{'ID': 'X.id: 4247.4, Y.id 534534', 'text': 'text - text'}
{'ID': 'X.id: 42233.4, Y.id 534534', 'text': 'text - text'}

我使用此regular expression来匹配它们:

{'ID': 'X.id: [0-9]+.[0-9], Y.id [0-9]+', 'text': 'text - text'}

我在https://regexr.com/上对其进行了测试,但确实有效。

但是我尝试使用此命令将其与grep一起使用:

cat raport.log | grep "{'ID': 'X.id: [0-9]+.[0-9], Y.id [0-9]+', 'text': 'text - text'}"

我在哪里犯错误?

1 个答案:

答案 0 :(得分:1)

您可以通过添加-E选项来使用ERE POSIX模式,也可以使用+*量化的子模式更改为其等效项(例如[0-9]+ => { {1}})(或在GNU [0-9][0-9]*中转义+。)

grep

查看online demo

请注意,您需要转义点以匹配文字s="{'ID': 'X.id: 4243.4, Y.id 534534', 'text': 'text - text'}" echo "$s" | grep -E "{'ID': 'X\.id: [0-9]+\.[0-9], Y\.id [0-9]+', 'text': 'text - text'}" echo "$s" | grep "{'ID': 'X\.id: [0-9][0-9]*\.[0-9], Y\.id [0-9][0-9]*', 'text': 'text - text'}" 字符。

相关问题