簡體   English   中英

jq替換json中部分值

[英]jq replace part of value in json

我需要從json輸出中替換值的一部分,並且我可以使用sed -i輕松地做到這一點,但是它也將替換文件中我不希望的其他部分,除非即時消息丟失了。 輸出是{ "LastModified": "2018-03-07T17:24:33.000Z", "Key": "pending/archive/f7ab1684-e94d-483e-ace1-560367c1196c_1000_s.json" }

我需要將LastModified值上的破折號“-”替換為斜杠,然后刪除一些內容,例如“ T”和“ .000Z”,以便最終將時間戳轉換為紀元。

我嘗試過使用貓清單| jq -r'。[] | 選擇(.LastModified ==“-”).LastModified =“ /”'和| =運算符,但我在網絡上找不到其他已完成的操作。

使用jqsub()fromdate()函數:

jq '.LastModified |= (sub("\\.000Z";"Z") | fromdate)' input.json

輸出:

{
  "LastModified": 1520443473,
  "Key": "pending/archive/f7ab1684-e94d-483e-ace1-560367c1196c_1000_s.json"
}

如果您的平台支持它,則可以使用date函數進行解析,然后重新格式化日期字符串。

.LastModified |= (sub("\\.000Z$"; "Z") | fromdateiso8601 | strftime("%Y/%m/%d %H:%M:%S"))

否則,您可以使用通常的字符串操作技術。

.LastModified |= "\(.[:10] | sub("-"; "/"; "g")) \(.[11:19])"

兩者都導致結果:

{
  "LastModified": "2018/03/07 17:24:33",
  "Key": "pending/archive/f7ab1684-e94d-483e-ace1-560367c1196c_1000_s.json"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM