Как стать автором
Обновить

Комментарии 8

[maxline++] = strdup(buffer + 9);

Обожаю этот стиль с инкрементами и волшебными константами.

Странная иллюстрация получилась. Зачем писать однострочник в виде простыни кода на С?

но при таком подходе задача неоправданно усложняется. Предлагаю просто взять и написать код на C.

полторы страницы кода — это «проще»?

В принципе задача сводится к парсингу строки по регулярному выражению. Вот тут
stackoverflow.com/questions/1891797/capturing-groups-from-a-grep-regex
куча вариаций. В том числе даже на чистом bash и выглядит это намного проще полутора страниц С.
Можно с другой стороны. Привести все к такому строковому виду, который правильно сортируется. Для этого достаточно добавить к одноциферным номерам лидирующий ноль, что легко делается с помощью sed. Номера устройств от 0 до 99 отлично отсортируются.
Конвеер будет df | sed | sort

Perl рулит, но даже это сложновато, т.к. можно просто:

$ df | grep /dev/loop | sort -k1.10 -n

во! вобще круть!)

Про межпроцессное взаимодействие написано интересно и легко читается. А вот с конвейером пример неудачный. Идеология юникса - максимально использовать готовое, а не писать в подобных случаях по странице С-кода .

В данном случае, что-нибудь вроде "...|sort -n -k 1.9 " решило бы проблему

Зарегистрируйтесь на Хабре, чтобы оставить комментарий