说我在源文件中有文字:
int main(int argc, char* argv[]) {
...
if(strcmp(argv[97], "param97") != 0)
exit(325);
...
if(strcmp(argv[98], "param98") != 0)
exit(328);
...
}
现在我想将所有作为argv参数的数字增加一个,将所有数字作为参数退出三。因此输出看起来像
int main(int argc, char* argv[]) {
...
if(strcmp(argv[98], "param97") != 0)
exit(328);
...
if(strcmp(argv[99], "param98") != 0)
exit(331);
...
}
我想在文本文件中的特殊范围之间执行此操作,因此命令应如下所示:
sed -n 1224,1482p file | sed <...>
有人可以给我一个暗示第二个sed命令应该是什么样的吗?
修改:
我想出了如何使用sed来解决这个问题:
sed -n 1224,1482p file | sed 's/\(.*\)\(argv\)\[\([0-9]\+\)\]\(.*\)/echo "\1\2"\[$(echo "\3+1"\|bc)\]"\4"/ge; s/\(.*\)\(exit\)(\([0-9]\+\))\(.*\)/echo "\1\2("$(echo "\3+3"\|bc)")\4"/ge'
我使用e标志允许我输入shell命令bc来增加所说的数字。