大家。
我有一个json文件:
{
"id" : "123",
"firstname" : "john",
"lastname" : "doe",
"tel" : "123"
}
字段可以包含任何值。
有没有办法使用sed,awk或其他任何方法更改此文件中的行,如:
"firstname" : "john" -> "firstname" : "bob"
值可以是任意值。
提前致谢。
答案 0 :(得分:3)
使用jq:
更新json文件中的值jq '."firstname" = "bob"' file
输出:
{ "id": "123", "firstname": "bob", "lastname": "doe", "tel": "123" }
答案 1 :(得分:1)
虽然json文件应该由不同的编辑处理,但我相信,因为你在这里标记了awk
所以试图在这里提供帮助。
awk '/"firstname"/{$3="\042bob\042\054"} 1' Input_file
输出如下。
{
"id" : "123",
"firstname" : "bob",
"lastname" : "doe",
"tel" : "123"
}
如果您想将输出保存到Input_file本身,那么您也可以添加above_command > temp_file && mv temp_file Input_file
。
编辑: 此外,如果您想保留该行的初始空间,您也可以尝试关注。
awk '/"firstname"/{$1=" "$1;$3="\042bob\042\054"} 1' Input_file
输出如下:
{
"id" : "123",
"firstname" : "bob",
"lastname" : "doe",
"tel" : "123"
}
答案 2 :(得分:0)
awk中的另一个人。使用sub()
和regex替换记录上最后引用的字符串,其中包含字符串filename
:
$ awk '/firstname/{sub(/\"[^\"]*\",?$/,"\"bob\"")}1' file
{
"id" : "123",
"firstname" : "bob"
"lastname" : "doe",
"tel" : "123"
}
答案 3 :(得分:0)
它也适用于nawk和mawk。
var