我是Powershell的新手。我想把我的作業自動化一點,需要從所有的檔案型別中簡單地提取以下模式:
([)
([0-9A-Z]{2, 4}. [0-9A-Z]{8}。 [0-9A-Z]{8}。[0-9A-Z]{4})
例子:
*lots of text*。
X-xdaemon-transaction-id。string=9971.0A67341C.6147B834。 0043,ee=3,shh,rec=0. 0,recu=0.0,reid=0.0,cu=3,cld=1。
X-xdaemon-transaction-id: string=AA71.0A67341C.6147B442。 0043,ee=3,shh,rec=0. 0,recu=0.0,reip=0.0,cu=3, cld=1.
*很多的文本*。
不幸的是,我收到的輸出是這樣的:
1mAAAA-0005nG-TN-H:220:
X-xdaemon-transaction-id: string=AA71.0A67341C.6147B442.0043,ee=3,shh,rec=0.0,recu=0.0,reip=0.0,cu=3,cld=1
我的'代碼'如下:
我的'代碼'如下:
Select-String -Path C。 樣本* -Pattern "(0001. [0-9A-Z]{8}.[0-9A-Z]{8}.[0-9A-Z]{4})" -CaseSensitive
而我想只接收模式。AA71.0A67341C.6147B442.0043而不添加任何東西
感謝任何幫助!
uj5u.com熱心網友回復:
你可以使用
$rx = '[0-9A-Z]{2,4}. [0-9A-Z]{8}. [0-9A-Z]{8}. [0-9A-Z]{4}'/span>
Select-String -AllMatches -Pattern $rx -Path 'C:Samples*' -CaseSensitive | % { $_. matches.value }
也就是說,
- 添加單詞邊界,將你的預期字串作為整個單詞來匹配,并轉義字面的
.字符 。
- 使用
-AllMatches(如果有的話,在每行獲得多個匹配結果),并使用$_.matches.value訪問每個產生的物件匹配值。
PS測驗:
PS C:Usersadmin> $B = Select-String -AllMatches -Pattern ' [0-9A-Z]{2,4}. [0-9A-Z]{8}. [0-9A-Z]{8}. [0-9A-Z]{4}' -路徑 'C:Samples*' -CaseSensitive | % { $_. matches.value }
PS C:Usersadmin>$B。
9971.0A67341C.6147B834.0043
AA71.0A67341C.6147B442.0043。
PS C:Usersadmin>
uj5u.com熱心網友回復:
嘗試:
$find = Get-ChildItem *.txt | Select-String -Pattern '[0-9A-Z]{2,4}. [0-9A-Z]{8}. [0-9A-Z]{4}' -CaseSensitive
$find.Matches.Value
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326666.html
標籤:
