Powershell: chọn và sắp xếp tệp văn bản

lập trình


CHÀO,

Tôi có một tệp văn bản test.txt có nội dung sau:

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

Tôi muốn tìm các dòng có “z” và sắp xếp tập hợp kết quả theo cột cuối cùng.

Những gì tôi đã thử:

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

Điều này đưa ra lỗi:

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

Giải pháp 1

Hãy thử xử lý nội dung như tệp .csv và sử dụng Nhập-Csv (Microsoft.PowerShell.Utility) – PowerShell | Microsoft Tìm hiểu[^] để tạo một tập hợp các đối tượng tùy chỉnh. Sau đó bạn có thể sắp xếp các đối tượng.

[edit]

Điều này có vẻ hiệu quả:

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

Lưu ý, tôi đã sử dụng int còn hơn là double vì tất cả các giá trị đều là số nguyên.

[/edit]

コメント

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