これが可能かどうか疑問に思っています。さまざまなファイル内のテキストを一括置換したいのですが、これは問題ではありません。私が理解できないのは、あるいは可能だとしても、特定の方法でテキストを置換することです。
例えば:
String = XXXXX_name($var1);
XXXX は固定なので、たとえば XXXX を YYYY に置き換えると簡単です。ただし、より複雑な部分は次のとおりです。
($var1);
別の変数を挿入したいので、一致は");"
<-- この前に挿入されますが、文字列にすでに 2 つの変数がある場合は($var1,$var2);
何も挿入されません。
if $ > 1
ここでもう1つ追加すると、Var1とVar2はさまざまな名前で呼ばれる可能性があるため、一致は内部にある必要があり()
、何もせず、前に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
キャプチャされた部分を置換部分に戻します。