I echo
- ваши входы, переупорядоченные, в цикл.Я назначил строку ввода второй клавише, чередовал неделитеры и добавил ее, затем напечатал новую строку.
Я передал цикл в sort
, а отсортированный вывод - вsed
, чтобы убрать предварительно добавленный ключ.
Я не очень много использовал конструкцию $ {x ///}, так что, вероятно, есть более чистый способ сделать это, чем это преобразование в подчеркивание, и я 'Я с нетерпением жду этого, LOL
$: echo "example.com/a
example.com/c
example.com/aaa/bbb/path/1
example.com/aaa/3
example.com/aaa/bbb/apath
example.com/aaa/2
example.com/aaa/bbb/bpath
example.com/aaa/1
example.com/aaa/bbb/cpath
example.com/b
example.com/aaa/bbb/path/2" |
while read line
do key=${line//\//_}
key=${key//[^_]/}
printf "$key\t$line\n"
done | sort |sed 's/^_* //'
example.com/a
example.com/b
example.com/c
example.com/aaa/1
example.com/aaa/2
example.com/aaa/3
example.com/aaa/bbb/apath
example.com/aaa/bbb/bpath
example.com/aaa/bbb/cpath
example.com/aaa/bbb/path/1
example.com/aaa/bbb/path/2