我有以下json输入
... "somefield":"somevalue", "time":"timevalue", "anotherfield":"value" ...
在我的ksh脚本中,我希望将timevalue替换为我的值。所以我用工作组创建了这个正则表达式
data=`cat somefile.json`
echo $data | perl -pe "s|(.*time\"\s*\:\s*\").*?(\".*)|\1%TIME%\2|g" | another-script.sh
... "somefield":"somevalue", "time":"%TIME%", "anotherfield":"value" ...
但是...我不能用数字代替,因为perl用数字定义组..所以这个显然不起作用
perl -pe "s|(.*time\"\s*\:\s*\").*?(\".*)|\120:00:00\2|g"
我可以通过两步替换来克服这个问题
perl -pe "s|(.*time\"\s*\:\s*\").*?(\".*)|\1%TIME%\2|g" | perl -pe "s|%TIME%|20:00:00|"
... "somefield":"somevalue", "time":"20:00:00", "anotherfield":"value" ...
但我敢肯定,有一种更好,更优雅的方法
MMMHUHU