bash는 문자열의 텍스트를 와일드카드 sed/regnex로 대체합니다.

bash는 문자열의 텍스트를 와일드카드 sed/regnex로 대체합니다.

이것이 가능한지 궁금합니다. 다양한 파일의 텍스트를 대량으로 바꾸고 싶은데 문제가 되지 않습니다. 내가 알아낼 수 없거나 가능하더라도 특정 방식으로 텍스트를 바꾸는 것입니다.

예를 들어:

String = XXXXX_name($var1); 

XXXX는 고정되어 있으므로 XXXX는 예를 들어 충분히 간단하게 YYYY로 대체됩니다. 하지만 더 복잡한 부분은 다음과 같습니다.

($var1);

다른 변수를 삽입하고 싶으므로 일치 항목은 ");"<-- 이 앞에 삽입하세요. 그러나 문자열에 이미 두 개의 변수가 있으면 ($var1,$var2);아무것도 삽입하지 마세요.

if $ > 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캡처된 부분을 교체 부분에 다시 넣습니다.

관련 정보