我有一个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