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
国コードのリストを国の配列に入れたいのですが。
-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": []
}