【问题标题】:Linux regex for .json file.json 文件的 Linux 正则表达式
【发布时间】:2016-11-15 22:23:58
【问题描述】:

我有一个包含以下参数的 .json 文件:

{
  "account_ref" : "dh2fk3weh28dnd",
  "fname" : "john",
  "sname" : "smith",
  "address" : "42 test street",
  "product" : "all",
  "email" : "j.smith@aol.com",
  "tele" : "0384756783"
}

此文件将在 linux 服务器上,我需要找到一种方法来提取 account_ref 值并使用自动化将其插入到 csv 文件中。

我在这个脚本、正则表达式方面没有经验,我相信正则表达式可能是提取 account_ref 值的答案。欢迎任何建议。谢谢。

【问题讨论】:

  • 如果您要在 linux CLI 或脚本中使用大量 JSON,我听说 jq 是最好的工具。您可能想检查一下。

标签: json regex linux shell scripting


【解决方案1】:

";"是csv分隔符

qa.json 是包含您数据的文件

output.csv 是结果 csv

$ cat qa.json

{ “account_ref”:“dh2fk3weh28dnd”,“fname”:“john”,“sname”: “smith”、“address”:“42 test street”、“product”:“all”、“email”: “j.smith@aol.com”,“tele”:“0384756783”,}

$ cat qa.json | awk -F'\"' '{for (i=1; i<=NF; i++) { if ((i%2)==0) { if($i=="account_ref"){ print $i ";" $(i+2)}}}}' > output.csv

awk -F'\"' '{for (i=1; i<=NF; i++) { if ((i%2)==0) { if($i=="account_ref"){ print $i ";" $(i+2)}}}}' qa.json  > output.csv

$ cat output.csv

account_ref;dh2fk3weh28dnd

【讨论】:

  • sed -r -n 's/.*(account_ref).*:.*"(.*)".*/\1;\2/p' qa.json 怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2018-08-22
  • 2011-08-03
  • 1970-01-01
  • 2010-10-28
  • 2021-06-25
  • 2015-02-18
相关资源
最近更新 更多