需要一個單線程的Perl腳本,它將打開一個文件並返回一個字符串。 我使用Perl腳本爲我的開發人員編譯c#代碼。 解決方案文件project.sln文件可能包含:Perl單行搜索並從文件中打印特定值
- Visual Studio 2005中
或 - Visual Studio 2008中
或 - 的Visual Studio 2010
根據VS版本,我需要加載相應的VS環境並繼續編譯代碼。
需要一個單線程的Perl腳本,它將打開一個文件並返回一個字符串。 我使用Perl腳本爲我的開發人員編譯c#代碼。 解決方案文件project.sln文件可能包含:Perl單行搜索並從文件中打印特定值
根據VS版本,我需要加載相應的VS環境並繼續編譯代碼。
一個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。
type project.sln | perl -pe "s/Visual Studio //"
還是你需要的東西不是版本?
「Y3K問題」 - 現在_樂觀。 – Ashley 2011-05-06 16:42:44
@Ashley:你會驚訝軟件持續多久!我記錄在案,我計劃在5000-01-02開始處理Y10K問題(或者更準確地說,我不打算在此之前開始工作)。因此,我懷疑它可能永遠無法達到我的待辦事項列表的頂部。 – 2011-05-06 16:53:12
即使只是'perl -n -e'print $ 1 if(m/foo /);' file.txt'對我來說是空的,即使file.txt包含'foo'。 – NHDaly 2016-07-18 21:41:01