我正在開發一個項目,並且由於一個簡單但非常不幸的錯誤,需要重寫一堆文件中的時間戳;具體地講,我需要每個時間戳的最後一部分,並通過30將其劃分。例如,如果該文件包含:查找並替換perl regex包括數學
"blahblahblah[00:05:25]randomblah[01:22:13]"
然後我需要它說
"bahblahblah[00:05:833]randomblah[01:22:433]"
在意識到純正則表達式無法處理探針,因爲它只處理字符而不處理數字,一點點的使用Google指向一個Perl單線程,我試圖修改以符合我的目的。這是我到目前爲止有:
perl -pi.bak -e 's/\d\d:\d\d:($1/30)!/e
不過,我有一個語法錯誤"around /30"
。任何人都可以幫助解決這個問題,並闡明它是如何工作的?我得到了逐行的東西,但不是表達式的一部分。謝謝!
在你要運行到/是你的分隔符的問題最小的 - 你試圖做'S//e',但你給perl的'S//30/e',這是太多的論據。嘗試轉義第二個斜槓:'($ 1 \/30)'。 –
zebediah49
你想要數字*舍入*還是*截斷*?例如,你想用'[01:01:966]'還是'[01:01:967]'替換'[01:01:29]'?你正在運行什麼版本的Perl? – Borodin