用sed逐行修改特殊数字

时间:2016-11-17 16:52:28

标签: bash sed

说我在源文件中有文字:

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来增加所说的数字。

0 个答案:

没有答案