2016-01-29 74 views
0

我有一個JSON字符串在我的粘貼緩衝區:如何更新複製的JSON字符串中的UUID字段?

{ "uuid":"886c69ba-c487-45a9-982e-f22820059a78", "meaningOfLife": 42 }

我想的UUID升級到一個全新的V4 UUID(隨機),然後覆蓋新的字符串粘貼緩衝區。我如何在Linux/Mac機器的命令行中執行此操作?

回答

2

這可以使用幾個實用程序的組合來解決。

首先,在命令行中想出一個方法來創建一個新的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 
} 
+1

如果你用JSON工作,即使是*小*,也值得選擇一個像'jq'這樣的工具:'pbpaste | jq「.uuid = \」$ UUID \「」| pbcopy'。 – chepner

+0

@chepner這是一個偉大的觀點,並且更加健壯。我不知道jq,但我嘗試過'jsawk'。你想對我的答案進行編輯,或者如果答案大不相同,你可以回答自己的答案嗎? – ryanm

相關問題