代码之家  ›  专栏  ›  技术社区  ›  user447607

使用BASH,如何从Java性能测试中删除@Ignore?

  •  0
  • user447607  · 技术社区  · 6 年前

    我在cygwin上。

    我希望能够开关我的性能测试。

    这对 插入 @Ignore :

    find . -type f -name "*.java" | xargs sed -i "s/\@Perf/\@Ignore\n\@Perf/g"
    

    ... 问题 相反的情况是行不通的:

    find . -type f -name "*.java" | xargs sed -i "s/\@Ignore\n\@Perf/\@Perf/g"
    

    这可能是因为行尾不是我想象的那样,或者sed停在了行尾。

    也尝试过:

    find . -type f -name "*.java" | xargs sed -i "s/\@Ignore\s*\@Perf/\@Perf/g"
    find . -type f -name "*.java" | xargs sed -i "s/\@Ignore\s\s\@Perf/\@Perf/g"
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   sKwa    6 年前

    对于 sed

    只需在模式匹配中添加下一行。例子:

    # java source file
    $ cat foo.java
    @Ignore
    @Perf
    public static int main() {
        return 0;
    }
    
    $ sed  "{ N; s/\@Ignore\n\@Perf/\@Perf/g }" foo.java
    @Perf
    public static int main() {
        return 0;
    }
    

    这个 N 命令将下一行追加到模式空间(从而确保它在每个周期中包含两个连续的行)。

        2
  •  0
  •   Gilles Quénot    6 年前

    尝试使用 ( \n 更好的支持):

    perl -i -0pe "s|\@Ignore\n\@Perf|@Perf|g" file.java
    

    您可以选择替换分隔符,例如 | :

    's|before|after|g'