grep日志文件中的多个单词

时间:2016-01-31 08:39:17

标签: regex linux grep

我的文件包含以下内容:

--------------------------------
service=serviceX
time=100ms
PARAMS={"data"=>"{\"id\":1,\"items\":[{\"quantity\":1,\"name\":\"itemName1\"
        ,\"quantity\":2,\"name\":\"itemName2\"}]}
------------------------------------------------
  --------------------------------
service=serviceX
time=200ms
PARAMS={"data"=>"{\"id\":2,\"items\":[{\"quantity\":2,\"name\":\"itemName3\"
        ,\"quantity\":2,\"name\":\"itemName4\"}]}
------------------------------------------------
  --------------------------------
service=serviceX
time=300ms
PARAMS={"data"=>"{\"id\":3,\"items\":[{\"quantity\":1,\"name\":\"itemName5\"
        ,\"quantity\":2,\"name\":\"itemName6\"}]}
------------------------------------------------

我正在尝试查找文件中列出的所有项目。 我的查询看起来像

grep -o  'name\\":\\"[^\\]*\\"' | tr -d '\\"'

,输出

name:itemName1
name:itemName2
name:itemName3
name:itemName4
name:itemName5
name:itemName6

我希望输出如下:

id:1
name:itemName1
name:itemName2
id:2
name:itemName3
name:itemName4
id:3 
name:itemName5
name:itemName6

我是linux新手,不知道如何在单个查询中使用grep查找多个单词。

1 个答案:

答案 0 :(得分:1)

或使用alternation metacharacter

grep -oP 'name\\":\\"[^\\]*\\|id\\":[^,]*' | tr -d '\\"'
                              ↑
          |__________________| |____________|
             look for this   or    that