Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell筛选器选项卡分隔的文本文件_Powershell - Fatal编程技术网

Powershell筛选器选项卡分隔的文本文件

Powershell筛选器选项卡分隔的文本文件,powershell,Powershell,我有一个制表符分隔的文件,我正在通过foreach循环运行该文件以匹配值 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 } $mMatch没有输出

我有一个制表符分隔的文件,我正在通过foreach循环运行该文件以匹配值

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 }

$mMatch没有输出,即使$filter是正确的,我可以在控制台中用$filter的值进行测试,它会给我结果。值得一提的是,并非所有的行都与我正在搜索的值匹配;但也有一些是这样做的,我希望它能输出这些值。我正在Windows 2003上运行2.0。

尝试这样编写筛选器(\t用于正则表达式中的制表符):


您可以将其转换为csv格式,并为列指定有意义的名称:

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

总是一些小事:

我删除了变量周围的括号:

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

我最近有一个类似的要求,我想从文件中搜索字段中的值列表,就像在SQL中使用in子句一样

从列所在的表中选择*(值列表)

使用以下方法实现-

$lstExpenseID = @("VAL1"
 ,"VAL2"
 ,"VAL3")

Get-ChildItem -Filter "*.txt" -Path .\ |
ForEach-Object {
  Import-Csv -Delimiter `t -Path $_.FullName | Where-Object -Property "Cust id" -In -Value $lstExpenseID
}

你能给出一个test.txt的小样本,显示一条匹配的线和一条不匹配的线吗?这是不公平的,你只是用我的答案来构建你的!我可以用您的代码构建模式,但答案在正则表达式的\t中。
$lstExpenseID = @("VAL1"
 ,"VAL2"
 ,"VAL3")

Get-ChildItem -Filter "*.txt" -Path .\ |
ForEach-Object {
  Import-Csv -Delimiter `t -Path $_.FullName | Where-Object -Property "Cust id" -In -Value $lstExpenseID
}