bash сортировка (как)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
G@riK
Сообщения: 54

bash сортировка

Сообщение G@riK »

нужно сделать такую сортировку:

допустим есть такая запись в файле - folder/some name
нужно, чтобы сортировка была по символу, расположенному после "/"... sort -kx.x не подходит, т.к. folder модет иметь переменную длину...

есть какие-либо предложения?
Ибу ибуди - ху_ида_о муди - [Шаг за шагом можно достигнуть цели (кит.)]
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: bash сортировка

Сообщение sash-kan »

создать промежуточный файл, в котором первым столбцом подставить те символы, по которым следует сортировать.
отсортировать sort'ом.
удалить первый столбец.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: bash сортировка

Сообщение ddc »

А "grep `cat file | cut -d '/' -f 2` file" не подойдёт?
Спасибо сказали:
Аватара пользователя
G@riK
Сообщения: 54

Re: bash сортировка

Сообщение G@riK »

нужно, чтобы folder сохранился...
Ибу ибуди - ху_ида_о муди - [Шаг за шагом можно достигнуть цели (кит.)]
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: bash сортировка

Сообщение ddc »

G@riK
Тут он сохранится за счёт grep.
Спасибо сказали:
Аватара пользователя
G@riK
Сообщения: 54

Re: bash сортировка

Сообщение G@riK »

а если имя состит из 2 и более слов, разделённых пробелами?
Ибу ибуди - ху_ида_о муди - [Шаг за шагом можно достигнуть цели (кит.)]
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: bash сортировка

Сообщение madskull »

на перле довольно просто и делается примерно так

Код: Выделить всё

perl -we 'print sort {($aa,$bb) = ($a=~/.+\/(.+)$/, $b=~/.+\/(.+)$/); $aa ge $bb} <>' file


а вот в баше, видимо, не обойтись без метода, предложенного sash-kan (создание дополнительного столбца). По крайней мере, я не заморачиваюсь и решаю это примерно так:

Код: Выделить всё

cat file | while read f; do echo "${f##*/};$f"; done | sort | cut -d\; -f2
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
G@riK
Сообщения: 54

Re: bash сортировка

Сообщение G@riK »

спасибо большое
Ибу ибуди - ху_ида_о муди - [Шаг за шагом можно достигнуть цели (кит.)]
Спасибо сказали: