0

値を一致させるために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 }

$ filterが正しいのに、$ mMatchが出力されません。コンソールで、$ filterの値を使用してテストを実行すると、結果が得られます。すべての行が私が探している値と一致するわけではないことに言及することが重要かもしれません。しかし、そうするものもあり、それらのために私はそれが値を出力したいと思います。Windows2003で2.0を実行しています。

4

4 に答える 4

1

それを csv 形式に変換して、列に意味のある名前を付けることができます。

Get-Content TabDlimited.txt | 
ConvertFrom-Csv -Header col1,col2,col3 -Delimiter "`t"  |
Where-Object {$_.col1 -match 'whatever'}
于 2012-06-26T09:08:52.870 に答える
0

次のようにフィルターを記述してみてください (\t は正規表現のタブです)。

$filter = "`"$vName/\t`""
于 2012-06-26T03:46:32.267 に答える
0

それは常にささいなことです:

変数を囲む括弧を削除しました。

$filter = $vName + "/\t"
$mMatch = gc d:\test.txt | select-string -pattern $filter
于 2012-06-26T15:18:49.430 に答える