【问题标题】:How do I extract values from a JSON file (using grep / cut)? [regex question]如何从 JSON 文件中提取值(使用 grep / cut)? [正则表达式问题]
【发布时间】:2020-10-28 21:56:16
【问题描述】:

我在 JSON 文本文件中有此内容:

{"cdate":"2020-09-01T23:11:46-02:00","email":"example_email@gmail.com","phone":"+66 9988 1234","firstName":"John","lastName":"Smith","orgid":"0","orgname":"","segmentio_id":"","bounced_hard":"0","bounced_soft":"0","bounced_date":"0000-00-00","ip":"1234567","ua":"","hash":"jfepfjepjfewfe87","socialdata_lastcheck":"0000-00-00 00:00:00","email_local":"","email_domain":"","sentcnt":"27","rating_tstamp":"2019-09-22","gravatar":"1","deleted":"0","anonymized":"0","adate":"2020-08-21T04:11:09-05:00","udate":"2020-02-01T21:01:21-06:00",

这段文字都在一行上。

我想提取三个值:“email”、“firstName”和“lastName”。我用cut -d ":" -f 6,8,9

这提供: "example_email@gmail.com","phone":"John","lastName":"Smith","orgid"。然后我可以清理它。

问题是我在文件中有数百个类似的条目,并且它们的间距并不相同。所以我不能说cut的下一个用途应该是+50(或其他)。

我查看了 grep,但我不知道如何实现我的目标。理想情况下我想提取:

example_email@gmail.com 约翰 史密斯

我不在乎它是在一行上还是在三个单独的行上。

谢谢!

【问题讨论】:

    标签: grep cut


    【解决方案1】:

    可能最好的方法是使用一些 json 解析器来利用这种格式。但是为了好玩,这可能会起作用:

    grep -o '"\(email\|firstName\|lastName\)":"[^"]*"' input_file
    

    Worth checking out 用于适当的工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-12
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多