2012-06-26 60 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

相关问题