没有标题的数据的Powershell排序对象

时间:2018-01-04 22:11:26

标签: powershell sorting object

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

2 个答案:

答案 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你应该使用它们而不是解析文本。