將 bash 中的一長串檔案中的 [tr][tr]{X} 改為 [tr][tr]{\tinyX} ?

將 bash 中的一長串檔案中的 [tr][tr]{X} 改為 [tr][tr]{\tinyX} ?

這裡是新手。我正在嘗試編寫一個 bash 腳本,該腳本將為資料夾中的每個文件替換以下序列: [tr][tr]{X}其中X 是任何十進制數(數字和“.”的集合),其中X 是任何十進制數(數字和“. 」的集合) [tr][tr]{\tinyX}

有任何想法嗎?

謝謝

答案1

如果您無法存取 GNU sed,您也可以使用perl(實際上借用了其-iGNU sed):

find . -type f -exec perl -Tpi -e 's/\Q[tr][tr]{\E\K[\d.]+\}/\\tiny$&/g' {} +

答案2

GNUsed使用全域替換模式s/regexp/replacement/g

sed -i'' 's/\(\[tr\]\[tr\]{\)\([0-9.]\+}\)/\1\\tiny\2/g' /path/to/folder/*

這捕獲一組中的字串[tr][tr]{X包含至少一個數字或.(括號表達式[0-9.]\+\+匹配括號內的字元一次或多次),然後}在第二組中結束,並用第一組替換匹配的部分,\tiny並且每行第二組。()組的括號、文字方括號[]+文字反斜線\需要用另一個反斜線轉義。

確保在運行此程式之前備份您的資料資料夾(或使用-i.back而不是-i''將原始檔案保留為filename.back)。

相關內容