質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

1回答

5039閲覧

【Powershell】要素同士の完全一致について

chiks0723

総合スコア12

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2020/02/16 19:51

こんばんは
下記について教えてください。

マスタファイル
master.csv
"aaa","bbb","ccc","ddd","eee"

上記と他の処理上で取得した値(例 $a=("aaa","bbb","ccc","ddd","eee"))
をif文で完全一致の場合は次へ進むという
処理を作成したいです。
自分では下記のように考えましたが、
この要素を含むというものは実現できても完全一致を実現することができず、
大変申し訳ございませんがご教授願います。

$master = Get-Content master.csvフルパス -Totalcount 1 $result = ($master | Where-Object { $a -notcontains $_ }) If($result.count -eq 0){ Write-Host ("OK") } else{ exit }

上記だと$a側に同じ値の要素などがあったときの対処ができないため
大変申し訳ございませんがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/02/16 23:44

まず二つの集合の長さを比べ、異なれば $false を返します。同じであれば添え字を使って要素を順に調べ、異なれば $false を返します。全て比較し終わったなら全て同じだったということなので $true を返します。
guest

回答1

0

オブジェクトの比較には型を合わせてCompare-Objectを使用するのが便利です。

以下ではmaster.csv"付きのデータなのでImport-Csvで読み込み配列にしてこれを比較元としています。

但し、要素の順番は入れ替わっていても差分無しとなるため、
順序が重要な場合はCompare-Objectではなく($target -join(",")) -eq ($master -join(","))のように全部くっつけて文字列比較してください。この場合同じかどうかの結果しかわかりません。

powershell

1$master=(import-csv master.csv -Header "f1,f2,f3,f4,f5".split(",")).psobject.Properties.value 2$target=("aaa","bbb","ccc","ddd","eee"); 3Compare-Object $master $target

以下実行結果

powershell

1PS C:\temp> cat .\master.csv 2"aaa","bbb","ccc","ddd","eee" 3PS C:\temp> $master=(import-csv master.csv -Header "f1,f2,f3,f4,f5".split(",")).psobject.Properties.value 4PS C:\temp> $target=("aaa","bbb","ccc","ddd","eee"); 5PS C:\temp> Compare-Object $master $target 6PS C:\temp> $target=("aaa","###","ccc","ddd","eee"); 7PS C:\temp> Compare-Object $master $target 8InputObject SideIndicator 9----------- ------------- 10### => 11bbb <=

投稿2020/02/17 06:39

編集2020/02/17 06:49
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問