2017-01-04 136 views
2

我編寫了一個PowerShell腳本來比較兩個文本文件。在file1中,數據是組織的。但是在file2中數據沒有組織。我通常手動組織數據。但是現在數據增加了。我需要使用PowerShell自動組織。從文本文件中讀取特定文本

PowerShell必須讀取兩個特殊字符之間的數據。例如:<****@是我的數據。它只能讀取****。這種模式重複'n'次。

回答

1

使用正則表達式<(.*?)@來匹配相關的子字符串。 .*?匹配<和下一個出現的@(非貪婪/最短匹配)之間的所有字符。括號將匹配放入捕獲組中,以便稍後可以引用它。

Select-String -Path 'C:\path\to\file2.txt' -Pattern '<(.*?)@' -AllMatches | 
    Select-Object -Expand Matches | 
    ForEach-Object { $_.Groups[1].Value } 

$_.Groups[1]指的是比賽中的第一個捕獲組。

+1

在正則表達式中的錯字? ''<(。*?)q'' – sodawillow

+0

@sodawillow感謝您的單挑。固定。 –

相關問題