![使用 sed 重構程式碼](https://rvso.com/image/76408/%E4%BD%BF%E7%94%A8%20sed%20%E9%87%8D%E6%A7%8B%E7%A8%8B%E5%BC%8F%E7%A2%BC.png)
如何編寫 sed 腳本來重新排列/重構檔案的字串?
我的文件的內容是:
for(int i=0; i<old(a, 10); i++)
{
sum += old(c*c, i*a)
}
我希望修改後的內容看起來像:
for(int i=0; i<new(10,0,a); i++)
{
sum += new(i*a, c*c)
}
答案1
以下內容適用於 GNU sed
- 它使用\<
和\>
單字邊界標記來確保它僅在它本身是一個“單字”時才更改為old
,new
而不僅僅是作為單字的一部分嵌入,例如cold
。
$ sed -e 's/\<old\>/new/g' foo.c
for(int i=0; i<new(a, 10); i++)
{
sum += new(c*c, i*a)
}
-i
如果您希望就地更改檔案而不是列印到標準輸出,請使用 GNU sed 的選項。
警告: 這個sed
腳本會改變全部/\<old\>/
來源文件中出現 的情況。這可能比你想要改變的要多得多。
答案2
gnu sed:
/bin/sed -ire \
's!\<old\(([^)]+), *([^) ][^)]*)\)!new(\2, \1)!g' \
*.c </dev/null