LINUX.ORG.RU

сортировка строк в файле по алфавиту


0

0
есть файл с путями вида
./.licq/licq_gpg.conf
./.licq/sar.conf
./.licq/licq_qt-gui.conf
./.licq/licq.conf
./.licq/users.conf
./.config
./.config/gpicview/gpicview.conf
./.config/Trolltech.conf
надо внутри него отсортировать по именам что бы пути были такие же как при сортировке файлов по имени. подскажите что для этого можно использовать.
anonymous
>надо внутри него отсортировать по именам что бы пути были такие же как при сортировке файлов по имени.

мой парсер сегфолтится на этой фразе.
sdio ★★★★★
()
я так понял что надо отсортировать по имени файлов сохраняя пути к файлам?

[ed__ed@localhost ~]$ cat data.t | perl -e '@a=<>; print sort{ lc((split(/\//,$a))[@_-1]) cmp lc((split(/\//,$b))[@_-1]) } @a; '
./.config
./.config/gpicview/gpicview.conf
./.licq/licq.conf
./.licq/licq_gpg.conf
./.licq/licq_qt-gui.conf
./.licq/sar.conf
./.config/Trolltech.conf
./.licq/users.conf
ed__ed
()
Ответ на: комментарий от ed__ed
>я так понял что надо отсортировать по имени файлов сохраняя пути к файлам?

Мой вариант:
   предположим что символ @ не встречается в исходном файле.

$ cat data.t | sed 's!/[^/]*$!@&!' | sort -t'@' -k2 | sed 's/@//'

./.config
./.config/Trolltech.conf
./.config/gpicview/gpicview.conf
./.licq/licq.conf
./.licq/licq_gpg.conf
./.licq/licq_qt-gui.conf
./.licq/sar.conf
./.licq/users.conf
sdio ★★★★★
()
Ответ на: комментарий от sdio
>Местоположение больших букв зависит от локали (см. ./.config/Trolltech.conf )

странно у меня это решение нормально отсортировало:

[ed__ed@localhost ~]$ cat data.t | sed 's!/[^/]*$!@&!' | sort -t'@' -k2 | sed 's/@//'
./.config
./.config/gpicview/gpicview.conf
./.licq/licq.conf
./.licq/licq_gpg.conf
./.licq/licq_qt-gui.conf
./.licq/sar.conf
./.config/Trolltech.conf
./.licq/users.conf

а Trolltech.conf не должно было висеть либо в начале либо в самом конце?
ed__ed
()
Ответ на: комментарий от ed__ed
Я же говорю от локали зависит.
сделай перед сортировкой
export LANG=C
sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.