トップ回答者
Powershellのcontains演算子について

質問
-
Powershellのcontains演算子について質問です。よろしくお願いします。
file.txtファイル内のテキスト文字列(改行含む)に「特定の文字」を
含むかどうか検索するスクリプトを作成しています。
「特定の文字」は、check.txtファイルに一文字のみ入力します。
この「特定の文字」がある一部の文字の場合、意図したとおりに
検索ができません。どなたかお分かりになる方はいらっしゃいますか。
○スクリプト
$mapping_file = Get-Content -Encoding Default 'check.txt'
$text = Get-Content -Encoding Default 'file.txt'
$text -contains $mapping_file
○出力結果
True または False
○問題
check.txtの内部記載された一文字が以下の場合、
file.txtに該当の文字が含まれるにもかかわらず、結果が
Falseになってしまいます。
・「はしご高」 高 の変則文字
・「かっこ株」 (株)の一文字
○補足情報
・file.txt、check.txtはどちらもshift-jis(cp932)で保存しています。・OSはWindows 7 SP1(32bit) Powershellのバージョンは下記の通りです。
$PSVersionTable
Name Value
---- -----
PSVersion 3.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.18052
BuildVersion 6.2.9200.16481
PSCompatibleVersions {1.0, 2.0, 3.0}
PSRemotingProtocolVersion 2.2
回答
すべての返信
-
-
回答ありがとうございます。また変身が遅くなり申し訳ございません。
ご指摘の通り、file.txtは一行複数文字で構成されています。
そのため、一行一文字に変更したところ、問題無く動作いたしました。
以前、以下のようなスクリプトで「ファイル内に含まれる文字を置換する」という-replace構文を
以前に作成しており、意図した通りに動作しました。
そのため、-containsも似たような動作をすると勘違いしておりました。
$mapping_file = Get-Content -Encoding Default 'check.txt'
$text = Get-Content -Encoding Default 'file.txt'
$text -replace $mapping_file,"置換後文字"
仕様を改めて確認してみます。ご指摘ありがとうございました。