2013年4月23日 星期二

使用perl one liner進行檔案搜尋取代的流程(SOP)

1. 第一步是找出要取代的標的,利用 perl -ne 'print if m/pattern/' filename 確認
2. 要做什麼樣的改寫?利用 perl -ne 'print if s/pattern/pattern2/' filename 確認
3. 試試看結果.利用 perl -pe 's/pattern/pattern2/' filename 確認
4. 加入i參數以進行更動. perl -pi -e 's/pattern/pattern2/' filename

ps.取代部要使用函數呼叫的話,參考 http://www.perlmonks.org/?node_id=638259 ,簡言之就是使用/e選項或 @{[...]}結構

例如,將srt字幕檔延遲5秒


perl -p -i.bak -e "s/((\d\d):(\d\d):(\d\d))/@{[sprintf('%02d',int(($4+60*$3+3600*$2+5) \/ 3600))]}:@{[sprintf('%02d',int((($4+60*$3+3600*$2+5) % 3600 \/ 60) ))]}:@{[sprintf \"%02d\",($4+60*$3+3600*$2+5) % 60]}/g;" srt.srt

沒有留言:

張貼留言