2011-06-02 54 views
2

我需要從文件中讀取並在其中找到一個單詞。每次運行腳本時都會生成新文件。該文件中有許多行,但總是有一個獨特的線,有以下幾點:Powershell - 抓住一個詞併發出它(或某物)

INSTANCE i-cbea4fa5 ami-c3e4dda ec2-........ 

值「實例」和「AMI-c3e4dda」永遠是文件中的相同。第二個項目「i-cbea4fa5」會有所不同,但始終位於該行內的相同位置,並始終以「i-」開頭。

我需要找到並在腳本中使用「i-cbea4fa5」值。

1)我怎樣才能提取出「i-cbea4fa5」的價值? 2)一旦找到,使用它的最好方法是什麼?

謝謝 丹尼爾·威廉姆斯

回答

0
((select-string <filename> -pattern "^INSTANCE \S+ ami-c3e4dda" -list).line).substring(9,10) 
+0

謝謝,90%是這樣做的。這個文件是製表符分隔的,所以我會用這個表達式:(ss foo.txt -pattern「^ INSTANCE \ W + \ S + \ W + ami-c3e」-list).line.split(「't」)[ 1] – 2011-06-02 17:02:25

1

使用正則表達式,然後提取結果字符串的指定部分。示例命令(有很多方法可以完成,但Select-String cmdlet是必不可少的)。我認爲「i -...」部分總是一個單詞(即沒有白色字符)。另外,如果找到多個值,則返回第一個值。

(Select-String -path file.txt -pattern "^INSTANCE i-.+ ami-c3e4dda" -AllMatches | % { $_.Matches } | % { $_.Value })[0].Split()[1]