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

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

이것이 가능한지 알고 싶습니다. 다양한 파일의 텍스트를 일괄 교체하고 싶은데 이는 문제가 되지 않습니다. 이해할 수 없거나 가능하더라도 특정 방식으로 텍스트를 바꾸십시오.

예를 들어:

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

관련 정보