我想知道這是否可能,我想批量替換各種文件中的文本,這不是問題。我無法弄清楚,或者即使有可能,也是以特定方式替換文字。
例如:
String = XXXXX_name($var1);
XXXX是固定的,所以XXXX替換為例如YYYY,很簡單。但更複雜的部分是:
($var1);
我想插入另一個變量,所以匹配將是");"
<-- 在此之前插入,但是如果字串已經有兩個變量,($var1,$var2);
則不插入任何內容。
現在要增加另一個東西,Var1和Var2可以被稱為不同的東西,所以匹配必須if $ > 1
在裡面()
然後不做任何事情,If $ = 1 inside ()
然後插入", $var2"
之前);
字串=XXXXX_name($var1);
應該變成:字串=YYYYY_name($var1, var2);
答案1
像這樣的東西嗎?
$ echo 'String = XXXXX_name($var1); ' |
sed -E -e 's/XXXXX_name\((\$[[:alnum:]_]+)\);/YYYYY_name\(\1, \$var2\);/'
String = YYYYY_name($var1, $var2);
在擴展正則表達式中,不帶引號的括號捕獲其中的部分,並且 sed 將\1
捕獲的部分放回替換部分中。