亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用組替換perl正則表達式

用組替換perl正則表達式

郎朗坤 2021-04-06 12:33:57
我有以下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" ...但我敢肯定,有一種更好,更優雅的方法
查看完整描述

2 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

雖然您可以使用正則表達式執行此操作,但是使用正確的工具會容易得多

jq '.time="20:00:00"' somefile.json

如果您特別希望使用Perl,Perl的核心發行版自2011年起就包含JSON解析器,因此您可以執行以下操作:

perl -MJSON::PP=decode_json,encode_json -0 -E '$j = decode_json(<>); $j->{time} = "20:00:00"; say encode_json($j)' somefile.json


查看完整回答
反對 回復 2021-04-16
  • 2 回答
  • 0 關注
  • 291 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號