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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.