繁体   English   中英

使用Perl代替grep

[英]Using perl instead of grep

在工作中,我们使用这种构造来例如找出自上次更新以来在SVN中更改的所有文件的名称,并对它们执行svn add命令:

svn st | grep '^\\?' | perl -pe 's/^\\s*\\?// | xargs -L 1 svn add'

我想:“我希望我可以使用Perl单行脚本而不是grep ”。

有可能这样做吗?

PS:我发现Perl中有一个m//运算符。 我认为应该在ARGV变量上使用它(在Perl中不知道它们的名称-可能是$_数组还是仅仅是$1类的变量?)。

简单:

svn st | perl -lne 'print if s/^\s*\?//' | xargs -L 1 svn add

或在Perl中做所有事情:

perl -e '(chomp, s/^\s*\?//) && system "svn", "add", $_ for qx(svn st)'

可以使用perl单行代码,但是它仍然依赖于shell命令,除非您可以找到一个模块来处理svn调用。 但是,不确定是否会真正提高性能的可读性。

perl -we 'for (qx(svn st)) { if (s/^\s*\?//) { system "svn", "add", $_ } }'

在脚本版本中:

use strict;
use warnings;

for (qx(svn st)) {
    if (s/^\s*\?//) {
        system "svn", "add", $_;
    }
}

我想这就是你想要的

svn st | perl -ne 's/^\s*\?// && print' | xargs -L 1 svn add

希望能帮助到你 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM