0

テキスト ファイルで 2 つの文字列を検索したいと考えています。出力は、最初の文字列が 8 文字を超える場合にのみ表示されます。

実行しようとしているコマンドは次のとおりです。

Get-Content -Path .\std_server*.out | Select-String '((if "cpu=" -gt 8)|application=")' | out-File  -width 1024 .\test.txt

したがって、ファイル std_server*.out で CPU と APPLICATION の両方の値を検索したいのですが、CPU の値が 8 文字を超える場合にのみこれらの値を出力したいと考えています。

それ、どうやったら出来るの?

現在、私は'(cpu=|application=")'で動作する基本的なバージョンを持っていますが、それは CPU のすべての値を出力し、CPU が不当に高い値 (CPU > 8)。

前もって感謝します。

4

2 に答える 2

0

それらが独自の回線にある場合は、次のようなものを使用できます

Get-Content -Path .\std_server*.out | ?{($_.StartsWith("CPU=") -And $_.Length -gt 12) -Or $_.StartsWith("Application=")} | out-File  -width 1024 .\test.txt

または、次のような終了文字(セミコロンなど)を確認できます

Get-Content -Path .\std_server*.out | ?{(($_.StartsWith("CPU=") -And $_.Length -gt 12) -Or $_.StartsWith("Application=")) -And $_.EndsWith(";")} | out-File  -width 1024 .\test.txt

または、次のような正規表現を使用します

Get-Content -Path .\std_server*.out | Select-String '^(cpu=\d{8,}|application=\d*)$' | out-File  -width 1024 .\test.txt

それらが独自の回線にある場合、または

Get-Content -Path .\std_server*.out | Select-String '(cpu=\d{8,}|application=\d*);' | out-File  -width 1024 .\test.txt

それらが文字で区切られている場合 (この場合は「;」)。

于 2016-01-28T13:24:27.120 に答える