У меня есть один файл, содержащий сведения о пространстве в хранилищах данных. Я хочу отсортировать его по свободному пространству, доступному в них.
Файл:
Name:VSP-01-32 Capacity:2047 Free Space:144
Name:VSP-02-33 Capacity:2047 Free Space:333
Name:VSP-03-34 Capacity:2047 Free Space:163
Name:VSP-04-35 Capacity:2047 Free Space:110
Name:VSP-05-36 Capacity:2047 Free Space:256
Name:VSP-06-37 Capacity:2047 Free Space:417
Вывод должен выглядеть так:
Name:VSP-06-37 Capacity:2047 Free Space:417
Name:VSP-02-33 Capacity:2047 Free Space:333
Name:VSP-05-36 Capacity:2047 Free Space:256
Name:VSP-03-34 Capacity:2047 Free Space:163
Name:VSP-01-32 Capacity:2047 Free Space:144
Name:VSP-04-35 Capacity:2047 Free Space:110
Я пробовал использовать sed и awk, но не смог найти убедительного решения. Пожалуйста, помогите.
решение1
Если вы посмотрите, то man sort
обнаружите, что (GNU) sort позволяет указать поле для сортировки. Попробуйте:
sort -n -t: -k4 -r
-n
означает сортировку по числам, а не по лексикографическим признакам.
-t:
указывает ему использовать :
для разграничения (разделения) полей.
-k4
указывает ему использовать четвертое поле.
-r
сообщает ему, что нужно изменить результат на противоположный.
Это имеет оговорку, что не будет работать, если в имени файла есть :
(что сдвинет поля/столбцы). Если это требование, то самым простым способом будет скрипт (например, perl или python).