我有一個JSON字符串在我的粘貼緩衝區:如何更新複製的JSON字符串中的UUID字段?
{ "uuid":"886c69ba-c487-45a9-982e-f22820059a78", "meaningOfLife": 42 }
我想的UUID升級到一個全新的V4 UUID(隨機),然後覆蓋新的字符串粘貼緩衝區。我如何在Linux/Mac機器的命令行中執行此操作?
我有一個JSON字符串在我的粘貼緩衝區:如何更新複製的JSON字符串中的UUID字段?
{ "uuid":"886c69ba-c487-45a9-982e-f22820059a78", "meaningOfLife": 42 }
我想的UUID升級到一個全新的V4 UUID(隨機),然後覆蓋新的字符串粘貼緩衝區。我如何在Linux/Mac機器的命令行中執行此操作?
這可以使用幾個實用程序的組合來解決。
首先,在命令行中想出一個方法來創建一個新的UUID。有許多方法,一種方法是在npm is installed之後安裝gen-uuid,例如, npm i gen-uuid -g
。一旦做到這一點,你可以運行下面的代碼:
UUID=`gen-uuid`
pbpaste | sed "s/\"uuid\":\"[^\"]*\"/\"uuid\":\"$UUID\"/g" | pbcopy
這將打開
{ "uuid":"886c69ba-c487-45a9-982e-f22820059a78", "meaningOfLife": 42 }
弄成這個樣子:
{ "uuid":"aab21875-d9d7-4d55-9204-f2d7a9b34109", "meaningOfLife": 42 }
我喜歡把毛茸茸的命令,這樣在我的~/.bash_profile
文件,如下所示:
# overwrite JSON string with a new uuid V4
newu() {
UUID=`gen-uuid`
pbpaste | sed "s/\"uuid\":\"[^\"]*\"/\"uuid\":\"$UUID\"/g" | pbcopy
}
然後,在命令行中,您可以在任何帶有UUID的JSON字符串上運行newu
!
UPDATE:由@chepner注意到,您還可以使用jq
實用增加&降低該sed
命令的脆性可讀性(在Mac上使用brew install jq
沖泡安裝)。請注意,如果它不是有效的JSON,則jq
將引發錯誤。
# overwrite JSON string with a new uuid V4
newu() {
UUID=`gen-uuid`
pbpaste | jq --indent 0 ".uuid = \"$UUID\"" | pbcopy
}
如果你用JSON工作,即使是*小*,也值得選擇一個像'jq'這樣的工具:'pbpaste | jq「.uuid = \」$ UUID \「」| pbcopy'。 – chepner
@chepner這是一個偉大的觀點,並且更加健壯。我不知道jq,但我嘗試過'jsawk'。你想對我的答案進行編輯,或者如果答案大不相同,你可以回答自己的答案嗎? – ryanm