我想将jSON消息中的“电子邮件地址”差异更改为小写。我尝试使用sed但失败了,因为\ L选项对我不起作用。我错过了什么吗?
a="{"id":null,"enabled":true,"password":"","email":"Foo@bar.com","lastName":"Foo","firstName":"lol"}"
echo $a | sed -e 's/email:[[:graph:]].*,last/\L&/g'
结果显示:
{id:null,enabled:true,password:,{L}email:Foo@bar.com,lastName:Foo,firstName:lol}
我想要的结果:
{id:null,enabled:true,password:,email:foo@bar.com,lastName:Foo,firstName:lol}
答案 0 :(得分:3)
我假设您没有GNU sed,因此无法访问\L
。相反,尝试perl:
echo "$a" | perl -pe 's/(email:[[:graph:]]*,last)/\L\1/'
答案 1 :(得分:1)
这是awk
awk -F, '{for (i=1;i<=NF;i++) if ($i~/email/) $i=tolower($i)}1' <<< "$a"
{id:null enabled:true password: email:foo@bar.com lastName:Foo firstName:lol}