繁体   English   中英

Grep 使用 shell 命令在花括号之间多行

[英]Grep multiple line between curly braces using shell command

我想 grep 文件中花括号之间的多行。 文件 originalfile.txt 的示例可能是:

{
"User ID": "admin",
"Tower Job ID": "",
"Date": "Fri Jan 15 12:50:13 UTC 2021",
"Playbook Input": [
  {"Host FQDN": "abc.cloud"},
  {"Host IP Address": "10.10.10.1"},
  {"Host Serial Number": "ABCD"},
  {"RITM Ticket": "sk_123"}
 ],
"Playbook Output": {
 "Results" : [

 { "Update server" : "Pass" , "Result" : "done" },
 { "Decom server" : "Pass" , "Result" : "done" },
 { "Check process" : "Pass" , "Result" : "done" },
 { "Schedule" : "Pass" , "Result" : "Scheduled @ 2021-01-15 04:53:55" },
 { "Playbook summary" : "Pass" , "Result" : "Complete" }
 ]
}
}

我想 grep 仅在Playbook Output之后的行中:

{
 "Results" : [

 { "Update server" : "Pass" , "Result" : "done" },
 { "Decom server" : "Pass" , "Result" : "done" },
 { "Check process" : "Pass" , "Result" : "done" },
 { "Schedule" : "Pass" , "Result" : "Scheduled @ 2021-01-15 04:53:55" },
 { "Playbook summary" : "Pass" , "Result" : "Complete" }
 ]
}

有没有办法 grep 文件中大括号之间的特定内容.s

您的输入结构为 JSON 因此您可以使用 jq shell 工具对其进行过滤

$ jq '."Playbook Output"' foo.json
{
  "Results": [
    {
      "Update server": "Pass",
      "Result": "done"
    },
    {
      "Decom server": "Pass",
      "Result": "done"
    },
    {
      "Check process": "Pass",
      "Result": "done"
    },
    {
      "Schedule": "Pass",
      "Result": "Scheduled @ 2021-01-15 04:53:55"
    },
    {
      "Playbook summary": "Pass",
      "Result": "Complete"
    }
  ]
}
sed -n -e '/Results/,$p' yourfile.dat

如果要保留顶部的支架:

sed -n -e '/Results/,$p' yourfile.dat | sed -e '1 i {'

Output:

{
 "Results" : [

 { "Update server" : "Pass" , "Result" : "done" },
 { "Decom server" : "Pass" , "Result" : "done" },
 { "Check process" : "Pass" , "Result" : "done" },
 { "Schedule" : "Pass" , "Result" : "Scheduled @ 2021-01-15 04:53:55" },
 { "Playbook summary" : "Pass" , "Result" : "Complete" }
 ]
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM