2

ファイルからテキストを取得する際に問題が発生しました。これが私が最終的にやりたいことです:

  1. 特定のファイルを検索して、「NoRequest」というフレーズのインスタンスを探します。
  2. NoRequest の値のみを使用してください。つまり、NoRequest = true の場合、行全体ではなく、配列に「true」のみが追加されます。
  3. ファイル内のフレーズのインスタンスごとにこれを行います。

ここに私が取り組んでいるセクションのスニペットがあります:

$FileContents = Select-String -Path "C:\Users\me\Documents\file.ini" -Pattern "NoRequest"

その行を使用すると、次のようになります。

PS> $FileContents
Documents\file.ini:222:NoRequest = false
Documents\file.ini:281:NoRequest = false
Documents\file.ini:347:NoRequest = false
Documents\file.ini:387:NoRequest = false
Documents\file.ini:1035:NOREQUEST = true
Documents\file.ini:1047:NoRequest = true
Documents\file.ini:1160:NOREQUEST = true
Documents\file.ini:1242:NOREQUEST = true

これは私が取得したいものです:

PS> $FileContents
間違い
間違い
間違い
間違い
真実
真実
真実
真実

コードをソリューションにパイプしようとしましたSelect-Object -Last 1が、変数が配列であるため、各行の最後の単語ではなく、配列の最後の行が選択されます。また、配列を取得して、「配列内の foreach 行、最後の単語以外をすべて切り取る」ことも考えました。それはうまくいくと思いますが、不器用な解決策になるようです。これには簡単で効果的な解決策があると確信していますが、私はそれを見ていません。

4

4 に答える 4