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