PowerShell中是否有一种方法可以对没有标题的数据进行排序。我无法使用| sort-object dateViewed
,因为我的数据不包含标头。我可以使用脚本来创建带有标题的新对象,但有没有办法按第3列排序?
如果我有一个cli API aws get-vols
,它会返回如下数据:
disk00 123456 20180103
disk00 222222 20180101
disk00 333333 20180102
我正在寻找简单的方法。
aws get-vols | sort-object (specify something that means column 3)
我会看到:
disk00 222222 20180101
disk00 333333 20180102
disk00 123456 20180103
答案 0 :(得分:1)
您可能最好使用AWS PowerShell module,这可能会返回一个真实的对象。
但是为了回答你的问题,我会假设从aws get-vols
返回的是一堆单独的行,它们实际上只是字符串,其中每个"列"由 TAB 分隔。
在这种情况下,请将其视为具有特殊分隔符的CSV:
aws get-vols |
ConvertFrom-Csv -Delimiter "`t" -Header Disk,Id,DateViewed |
Sort-Object -Property DateViewed
如果分隔符是多个空格而不是制表符,您可以使用相同的方法,它只是有点烦人:
aws get-vols |
ForEach-Object -Process {
# replace all contiguous whitespace with a comma
# hope you don't have column values with spaces ;)
$_ -replace '\s+', ','
} |
ConvertFrom-Csv -Header Disk,Id,DateViewed |
Sort-Object -Property DateViewed
答案 1 :(得分:1)
如果你有PowerShell 5.0或更新版本,你应该可以用the ConvertFrom-String
cmdlet说出这样的话:
aws get-vols | ConvertFrom-String | Sort-Object P3
但我同意briantist如果有cmdlet你应该使用它们而不是解析文本。