소스 코드가 있는데 일부 특정 줄을 새로운 서식과 텍스트로 바꾸고 싶습니다.
파일에는 다음 줄이 포함되어 있습니다.
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
어떻게 해야 합니까? 그리고,?,
(
,
if
sed
awk
답변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
\n
GNU 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);
}