使用perl而不是grep

在工作中,我们使用这个结构来查找所有文件的名字,在上一次更新之后在SVN中进行了更改,并对它们执行svn add命令:

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

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

是否有可能做,如果是的话?

PS:我发现在Perl中有一个m//运算符。 我认为它应该用在ARGVvariables上(不知道它们在Perl中的名字 – 可能是$_数组还是$1类variables?)。

简单:

 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 

希望能帮助到你 ;)