2012-06-26 102 views
0

我有一個製表符分隔的文件,我通過foreach循環來匹配值。Powershell過濾器製表符分隔的文本文件

foreach($mvalue in $mvalues) { 
$vName = $mvalue.Name 
$filter = "`"" + $vName + "/``t`"" 
$mMatch = gc d:\test.txt | select-string $filter 
Write-Output $vName 
Write-Output $filter 
Write-Output $mMatch } 

$ m匹配不輸出,即使$過濾器是正確的,我可以用$過濾器的價值控制檯做了測試,它給我的結果。可能很重要的一點是,並非所有行都與我正在搜索的值相匹配;但也有一些做,我希望它輸出的價值。我在Windows 2003上

+0

你可以給出一個test.txt的小樣本,它顯示了一個匹配的行和一個不會的行? – zdan

回答

0

嘗試運行2.0寫出您篩選這樣的(\ t是爲選項卡中的正則表達式):

$filter = "`"$vName/\t`"" 
+0

這隻適用於模式搜索。 –

1

你可以將其轉換爲CSV格式,並給列一個有意義的名稱:

Get-Content TabDlimited.txt | 
ConvertFrom-Csv -Header col1,col2,col3 -Delimiter "`t" | 
Where-Object {$_.col1 -match 'whatever'} 
0

它總是小事:

我從我的身邊取出變量的括號:

$filter = $vName + "/\t" 
$mMatch = gc d:\test.txt | select-string -pattern $filter 
+0

這是不公平的打你只是用我的答案來建立你的!我使用你的代碼構建了這個模式,但是正則表達式中的答案在\ t中。 – JPBlanc

相關問題