행에서 데이터를 추출하고 추출된 데이터를 사용하여 새 행을 추가하는 방법은 무엇입니까?

행에서 데이터를 추출하고 추출된 데이터를 사용하여 새 행을 추가하는 방법은 무엇입니까?

소스 코드가 있는데 일부 특정 줄을 새로운 서식과 텍스트로 바꾸고 싶습니다.

파일에는 다음 줄이 포함되어 있습니다.

LogIfYouCan(!is_it_ready, "Log Text, some variable: " << variable1 << " variable2: " << variable2);

나는 그것을 대체하고 싶다.

if(!is_it_ready) {
   LogOutput("Log Text, some variable: " << variable1 << " variable2: " << variable2);
}

즉, 로 시작하는 줄은 줄 끝까지 텍스트 LogIfYouCan로 변경되고 , 쉼표까지의 텍스트는 중괄호와 함께 추가됩니다. LogOutput어떻게 해야 합니까? 그리고,?,(,ifsedawk

답변1

사용sed

$ sed -E 's/[^!]*([^,]*),[^"]*(.*)/if(\1) {\n   LogOutput(\2\n}/' input_file
if(!is_it_ready) {
   LogOutput("Log Text, some variable: " << variable1 << " variable2: " << variable2);
}

답변2

-E\nGNU sed 및 BSD sed와 같이 ERE 및 개행 활성화를 지원하는 sed를 사용하십시오 .

$ sed -E 's/^LogIfYouCan\(([^,]+), *(.*)/if(\1) {\n   LogOutput(\2\n}/' file
if(!is_it_ready) {
   LogOutput("Log Text, some variable: " << variable1 << " variable2: " << variable2);
}

관련 정보