我有一些C代码,它本质上是一个switch语句,其中存在许多情况,大多数情况都存在:
case firstCase:
case secondCase:
actionFunction(dir,angle,speed);
break;
case thirdcase:
actionFunction(dir,angle,speed);
break;
我已完成sed 's/(action.*)/if (foobar)\n\t\t\t{\n\t\t\t\t\1\n\t\t\t}else\n\t\t\t{\n\n\t\t\t\}/g'
行的sed功能,并将其放置在正确的位置
案例优先
案例二
如果(foobar)
{actionFunction(dir,angle,speed);}
其他{
}
break;
if(foobar)
{actionFunction(dir,angle,speed);}
else{
}
我需要将匹配项\\ 1的修改版本放入else子句中。
case firstCase:
case secondCase:
if(foobar)
{actionFunction(dir, angle, speed);}
else{
actionFunction(newDir, angle, speed);
}
...
我该怎么做? 很抱歉这个问题持续了多久,可能还不清楚! 我很乐意回答。
谢谢!
答案 0 :(得分:0)
awk '{print} # print line
/case secondCase:/{ # if the line matches "case secondCase"
getline # retrieve the next line
print "if (foobar) {" # print if statement
print " "$0 # print if action
print "} else { # print else statement
sub(/dir/,"newdir") # update action
print " "$0 # print else action
print "}" # close if-else statement
}'
这将输出:
case firstCase:
case secondCase:
if (foobar) {
actionFunction(dir,angle,speed);
} else {
actionFunction(newdir,angle,speed);
}
break;
case thirdcase:
actionFunction(dir,angle,speed);
break;
您可以调整以上内容以适应您的需求。