2016-01-29 43 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

相关问题