2011-05-06 116 views
0

需要一個單線程的Perl腳本,它將打開一個文件並返回一個字符串。 我使用Perl腳本爲我的開發人員編譯c#代碼。 解決方案文件project.sln文件可能包含:Perl單行搜索並從文件中打印特定值

  • Visual Studio 2005中
  • Visual Studio 2008中
  • 的Visual Studio 2010

根據VS版本,我需要加載相應的VS環境並繼續編譯代碼。

回答

1

一個Perl版本的grep,除了它只需要查找包含Visual Studio 20xx的第一行並返回20xx值?

#!/usr/bin/env perl 
while (<>) 
{ 
    if (m/Visual Studio (2\d\d\d)\b/) 
    { 
     print "$1\n"; 
     exit 0; 
    } 
} 
exit 1; 

我想這不符合'單行'標準。如果你放棄了退出狀態,並有多個版本號住,如果該字符串出現多次,你可以壓縮到:

perl -n -e 'print $1 if (m/Visual Studio (2\d\d\d)\b/);' project.sln 

請注意,我幫您設置一個Y3K問題我用正則表達式 - 你必須決定是否用另一個'\d'替換2。

+0

「Y3K問題」 - 現在_樂觀。 – Ashley 2011-05-06 16:42:44

+1

@Ashley:你會驚訝軟件持續多久!我記錄在案,我計劃在5000-01-02開始處理Y10K問題(或者更準確地說,我不打算在此之前開始工作)。因此,我懷疑它可能永遠無法達到我的待辦事項列表的頂部。 – 2011-05-06 16:53:12

+0

即使只是'perl -n -e'print $ 1 if(m/foo /);' file.txt'對我來說是空的,即使file.txt包含'foo'。 – NHDaly 2016-07-18 21:41:01

0
type project.sln | perl -pe "s/Visual Studio //" 

還是你需要的東西不是版本?

相關問題