[英]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.