开发者

BASH - Parsing values from a single line database file (

开发者 https://www.devze.com 2023-03-27 06:39 出处:网络
im trying to parse a database file retrieved from a website via curl, however I having trouble trying to figure out how to get the values.

im trying to parse a database file retrieved from a website via curl, however I having trouble trying to figure out how to get the values.

This is an example of the file

{"Databasename":[{"Var1":"Var1Value","Var2":"Var2Value","Var3":"Var3Value"},{"Var1b":"Var1bValue","Var2b":"Var2bValue","Var3b":"Var3bValue"}],"foldername":{"dbTblcountvar":"dbTblcountvalue","filecountsize":"filecountsizvalue"}}

and with line break for better readability

{
 "Databasename":
 [
  {
   "Var1":"Var1aValue",
   "Var2":"Var2aValue",
   "Var3":"Var3aValue"
  },
  {
   "Var1":"Var1bValue",
   "Var2":"Var2bValue",
   "Var3":"Var3bValue"
  },
  {
   "Var1":"Var1cValue",
   "Var2":"Var2cValue",
   "Var3":"Var3cValue"
  }
 ],
"foldername":
  {
  "dbTblcountvar":"dbTblcountvalue",
  "filecountsize":"filecountsizvalue"
 }
}

asuming Var2 is always constant, how can i get its value? (Var2aVal开发者_开发问答ue,Var2bValue,Var2cValue,Var2dValue,.....)

In the example above the value im trying to get is an id for a file i need to send back to the server to download the file, and perform other operations on it.

Thanks


cat DownloadedFile.Ext | perl -pe 's/"Var2[abc]?":"(.+?)(?<![\\])"/\n\1\n/g' | grep -vPe '(?<!\\)"'

Those commands first put the Var2 (with optional a, b or c after) on a new line, then filter all lines that have a ". I suppose that is a json file, so I avoid the matching of escaped " with this part of the regexp:

(?<!\\)
0

精彩评论

暂无评论...
验证码 换一张
取 消