Сортировка по первому столбцу в файле - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть файл с именем adat.dat, в котором у меня есть следующие данные:

1;400;1000000;garden kitchen
11;178;56124;bathroom roof
7;777;20000;oneroom kitchen
10;150;1000000;garage yard

Я хочу отсортировать это от самого низкого до самого высокого по первому столбцу.

Таким образом, ожидаемый результат будет:

1;400;1000000;garden kitchen
7;777;20000;oneroom kitchen
10;150;1000000;garage yard
11;178;56124;bathroom roof

Вот мой код:

Get-Content adat.dat | Sort-Object 

Есть ли опция, аналогичная опции Linux sort -n?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

вот метод, который использует Get-Content вместо Import-CSV.с большими файлами массив объектов из Import-CSV может быть довольно большим.[ ухмылка ] этого можно избежать, используя блок скриптов для создания вычисляемого свойства для цели Sort-Object.

# fake reading in a text file
#    in real life, use Get-Content
$InStuff = @'
1;400;1000000;garden kitchen
11;178;56124;bathroom roof
7;777;20000;oneroom kitchen
10;150;1000000;garage yard
'@ -split [environment]::NewLine

$SortedInStuff = $InStuff |
    Sort-Object {[int]$_.Split(';')[0]}

$SortedInStuff

вывод ...

1;400;1000000;garden kitchen
7;777;20000;oneroom kitchen
10;150;1000000;garage yard
11;178;56124;bathroom roof
0 голосов
/ 04 декабря 2018

Используйте Import-Csv для чтения данных.Если данные не имеют заголовков, вы можете указать свои собственные с помощью параметра -Header.Затем выполните сортировку по первому столбцу, используя пользовательское свойство, которое преобразует строковое значение в целое число (для числовой сортировки).

Import-Csv 'adat.dat' -Delimiter ';' -Header 'a', 'b', 'c', 'd' |
    Sort-Object {[int]$_.a}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...