2013-06-22 76 views
0

我在我的輸入文件中有以下兩行。powershell寫包含字符串的文件的名稱

採樣輸入文件(文件名 - file.txt的)

String1 value 'string2' 
.. 
.. 
.. 
Call string1 

所需的輸出: File.txt。 (即文件名)

基本上我想要的文件的名稱 - 如果它包含以下兩行 1)string1 value 'string2' 2)call string1

1)和2)以上是兩個不同的線,可能有許多線之間。

P.S. a)我正在尋找'string2''string1'可以是任何8個字符。我不知道'string1' B)'string2'將永遠在單引號(') C)'string2'總是會被串前面'value'

感謝

回答

1

嘗試......

gc input.txt |?{$_ -match '.*value ''(.*)'''}|%{$matches[1]} 
0

下面的腳本遍歷當前目錄中的每個文件,並查找內容中包含2行的文件。不確定這是否符合您的情況,但不難將其定製到您的環境中。

dir *.* | foreach {if (get-content $_| Select-String -pattern "^[A-Za-z]{8} value 'string2'","Call string1") {"$_"}} 

輸出(在我的實驗室)是:

C:\Documents\ManualScripts\test.txt 

test.txt的是我測試這個腳本創建的文件。內容如下:

abcdefgh value 'string2' 
hello world 
I love church 
I love Jesus 
call string1 
Alibaba, sesame open the door! 

要@dazedandconfused我相信你的腳本返回「字符串1」,這是第二行,而不是文件名,他/她要求的一部分。除了你的腳本不反映他/她的另一個需求:「'string1'可以是任何8個字符」。如果我錯了,請原諒我。

+0

非常感謝!我快到了。請原諒我的缺乏經驗。只需要一點點改變 - 在你的腳本中。 'abcdefgh'('value'之前的第一行)應該匹配'string1'(在第五行的調用語句之後)。換句話說,string1應該等於'abcdefgh' - 那麼只有我希望它在輸出中。謝謝。 – Powershel

+0

沒問題我也是新手對於PowerShell。如果它是有道理的,請接受答案:) – Peter

+0

其實,原來的文章已被大量編輯。我原來的回答在當時是相關的,但現在沒有那麼多。 – dazedandconfused

相關問題