2017-12-04 2 views
0

のラインのフィルターの適用範囲私はPowerShellの上で初心者ですと、私は事の多くを試してみましたが、私は、私は本当に助けが必要だと思う...ここPowerShellの - CSV

は私の問題である: 私は、csvファイルの行の範囲をフィルタリングして、フィルタされていない行をpowershellに出力したいと考えています。さらに、私は最初に番号 "5"を持つ行をフィルタリングしたい。私はそのようなPowerShellの出力を「5」で始まる行をフィルタリングして持ちたい、

FirstName  Name  PhoneNumber 
A    AA   3366 
B    BA   3356 
C    CC   5898 
D    DC   5316 
E    EH   5623 
F    FB   5963 

をここに:私はPowerShellコマンド行うときにここで

は、CSVファイルの例です

ここで
FirstName  Name  PhoneNumber 
A    AA   3366 
B    BA   3356 

私のPowerShellのコードは次のとおりです。

$i = "C:\my_csv_file.csv" 
$colonne = "First Name" , "Name" , "PhoneNumber" 
$test = Import-Csv -Encoding Default $i -Delimiter ";" | Select $colonne 
echo $test 

私はフィルタリングする必要があるということは "if"コマンドを使うことだと思います。

実際に私はいくつかの議論で「if」をたくさん試しましたが、何も効果がありません!

あなたが私を助けてくれることを願っています!

私の悪い英語のために申し訳ありませんが、私はできるより良いを書くようにしました。

$i = 'C:\my_csv_file.csv' 
$colonne = @('First Name', 'Name', 'PhoneNumber') 
$test = Import-Csv -Path $i -Encoding Default -Delimiter ';' | 
    Where-Object { $_.PhoneNumber -notmatch '^5' } | 
    Select-Object -Property $colonne 
$test 

この(Where-Object)プロパティを見てみましょう:あなたは何かを理解していない場合、これがあなたのPhoneNumberプロパティをフィルタリングするために正規表現を使用します

+0

を試してみて、私は、例の行のいずれかの初めに数5が表示されません。 – EBGreen

+0

@EBGreen電話番号フィールドの先頭にあります。 – TheIncorrigible1

+0

Aaah ...私はフィルターの方向を誤解しました。私は明らかにもっと目を覚ます必要がある。 – EBGreen

答えて

0

この

$i = 'C:\my_csv_file.csv' 
$colonne = @('First Name', 'Name', 'PhoneNumber') 
$test = Import-Csv -Path $i -Encoding Default -Delimiter ';' | 
Where-Object { $_.PhoneNumber -notlike '5*' } | 
Select-Object -Property $colonne 
$test 
+0

ありがとう!それが私の一日でした! – Pieo

+0

問題ありません。 :)。 –

1

より多くを主張する喜びになり、私に教えて最終結果から5で始まる電話番号を削除します。

-1

同じデータとスクリプトには、異なる列名(ファイルにはスペースは含まれません)があります。これを試してみてください:

$Path = "C:\my_csv_file.csv" 
$Filter = { $_.PhoneNumber -notmatch '^5' } 
$Columns = "FirstName", "Name", "PhoneNumber" 
$FilteredData = Import-Csv -Path $Path -Encoding Default -Delimiter ";" |? $Filter | Select $Columns 
$FilteredData | Format-Table -AutoSize -Wrap | Out-Host 
関連する問題