web-dev-qa-db-ja.com

jqは.txtファイルを読み取り、値をjsonファイルに書き込みます

jqを使用して国コードのリストを含む.txtファイルを解析し、JSONオブジェクトの値に書き込みたいと思います。

これが私がこれまでに持っているものです:

cat myfile.json | 
jq -R -f test_id.txt 'select(.country == []).country = "test_id.txt"' > newfile.json

.txtファイルは次のようになります。

"NSC"
"KZC"
"KCC"
"KZL"
"NZG"
"VRU"
"ESM"
"KZF"
"SFU"
"EWF"
"KQY"
"KQV"

そして私のJSONは次のようになります:

{
  "scsRequestId": null,
  "includeMetadata": true,
  "includeHoldings": true,
  "country": [],
  "region": [],
  "oclcSymbol": []
}

これが私が得ているエラーです:

jq: error: syntax error, unexpected QQSTRING_START, expecting $end (Unix Shell quoting issues?) at <top-level>, line 2:
"KZC"
jq: 1 compile error

国コードのリストを国の配列に入れたいのですが。

5
mjo

-fの引数は、実行元のフィルターを読み取るファイルです。ファイルからデータを読み取りたい場合は、--slurpfileではなく-fを使用します。

したがって:

jq --slurpfile countries test_id.txt '.country=$countries' <myfile.json >newfile.json

指定された入力で実行すると、newfile.jsonの結果の内容は次のようになります。

{
  "scsRequestId": null,
  "includeMetadata": true,
  "includeHoldings": true,
  "country": [
    "NSC",
    "KZC",
    "KCC",
    "KZL",
    "NZG",
    "VRU",
    "ESM",
    "KZF",
    "SFU",
    "EWF",
    "KQY",
    "KQV"
  ],
  "region": [],
  "oclcSymbol": []
}
9
Charles Duffy