【解決方法】Powershell: テキスト ファイルの選択と並べ替え

プログラミングQA


こんにちは、

次の内容のテキスト ファイル test.txt があります。

AAAA z 669
BBBB y 9555
AAAA z 5 
BBBB z 48
CCCC y 1166
AAAA x 67777
BBBB z 223

「z」を含む行を検索し、結果セットを最後の列に従って並べ替えたいと考えています。

私が試したこと:

Get-Content .\test.txt | Select-String "z" | Sort-Object { [double]$_.split()[-1] }

これによりエラーが発生します:

Sort-Object : Method invocation failed because [Microsoft.PowerShell.Commands.MatchInfo] does not contain a method name
d 'split'.
At line:1 char:46
+ ... test.txt | Select-String "z" | Sort-Object { [double]$_.split()[-1] }
+                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidResult: (AAAA z 669:PSObject) [Sort-Object], RuntimeException
    + FullyQualifiedErrorId : ExpressionEvaluation,Microsoft.PowerShell.Commands.SortObjectCommand

解決策 1

コンテンツを .csv ファイルのように扱い、次を使用してみてください。 インポート Csv (Microsoft.PowerShell.Utility) – PowerShell | Microsoft Learn[^] カスタム オブジェクトのセットを作成します。 これでオブジェクトを並べ替えられるようになります。

[edit]

これはうまくいくようです:

パワーシェル
$A = Import-Csv -Path .\test.txt -Delimiter " " -Header 'One','Two','Three'
$A | Where-Object -Property Two -Like "z" | Sort-Object { [int]$_.Three }

注、私は使用しました int それよりも double すべての値は整数であるためです。

[/edit]

コメント

タイトルとURLをコピーしました