perl中搜索字符串内的内联多重匹配

时间:2013-08-24 02:42:56

标签: regex perl

我有OpenGL代码,我希望在运行astyle后有一些特殊的缩进。例如,

glBegin(GL_LINES);
glVertex2f(1.0f, 2.0f);
glVertex2f(1.0f, 2.0f);
glVertex2f(1.0f, 2.0f);
glVertex2f(1.0f, 2.0f);
glEnd();

以上代码我想更改为下面的内容。

glBegin(GL_LINES);
    glVertex2f(1.0f, 2.0f);
    glVertex2f(1.0f, 2.0f);
    glVertex2f(1.0f, 2.0f);
    glVertex2f(1.0f, 2.0f);
glEnd();

在这个特殊情况下,无论glBegin和glEnd之间是什么,我想换4个空格。

我想内联并使用perl。

1 个答案:

答案 0 :(得分:2)

“内联”很难说出你的意思。我假设您要使用-e命令行选项。这是一个非常简单的perl使用方法。您应该花一些时间阅读文档。在Windows cmd shell中:

perl -p -e "$i=0 if/glEnd/;s/^/    / if $i;$i=1 if /glBegin/" < infile.c > outfile.c

在bash中将双引号替换为单引号。