大家。
我有一个json文件:
{
"id" : "123",
"firstname" : "john",
"lastname" : "doe",
"tel" : "123"
}
字段可以包含任何值。
有没有办法使用sed,awk或其他任何东西来改变这个文件中的一行,如:
"firstname" : "john" -> "firstname" : "bob"
值可以是任意值。
提前致谢。
虽然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"
}
使用jq更新json文件中的值:
jq '."firstname" = "bob"' file
输出:
{ "id": "123", "firstname": "bob", "lastname": "doe", "tel": "123" }
另一个在awk。使用sub()
和regex替换记录上最后引用的字符串,其中包含字符串filename
:
$ awk '/firstname/{sub(/\"[^\"]*\",?$/,"\"bob\"")}1' file
{
"id" : "123",
"firstname" : "bob"
"lastname" : "doe",
"tel" : "123"
}
它也适用于nawk和mawk。
awk '{sub(/john/,"bob")}1' file
output
{
"id" : "123",
"firstname" : "bob",
"lastname" : "doe",
"tel" : "123"
}