Сортировка строк при группировке отступов с их родительским

У меня есть список строк, похожий на книгу, например

day satur- sun- holy- night ball to- eve election christmas 

Теперь я хочу сортировать эти строки в явном виде: я хочу сгруппировать каждый «родительский» ( day , night , eve ) с их соответствующими отступными «дочерними» объектами ( satur- , sun- , …) и сортировать их групп по их родительской записи. Я также хочу сортировать дочерние записи в любой группе.

Таким образом, желаемый результат:

 day holy- satur- sun- eve christmas election night ball to- 

Как бы я мог добиться этого, используя инструменты unix, такие как sort ?

One Solution collect form web for “Сортировка строк при группировке отступов с их родительским”

Вы можете выбрать персонажа, который вряд ли встречается в вашем текстовом файле, добавить родительское имя + этот символ к каждой дочерней строке, сортировать, затем удалить родительское имя и разделитель из каждой дочерней строки, например, с помощью gnu sed и низкого ascii char like \x02

 sed '/^[^[:blank:]]/h;//!G;s/\(.*\)\n\(.*\)/\2\x02\1/' infile | sort | sed 's/.*\x02//' 

Как это работает:
1-й sed делает следующее:
/^[^[:blank:]]/h – копировать строки без отступов (родителей) на место удержания
//!G – на отступы (дочерние) добавить содержимое пространства удержания в пространство рисунка
s/\(.*\)\n\(.*\)/\2\x02\1/ – подкачки в пространстве шаблонов, заменяющие \n ewline на \x02
после этого sort и удалять все до и включая \x02 со вторым sed 's/.*\x02//'

  • Сортировка на основе последнего появления символа
  • сортировка с помощью команды -k
  • Сортировка строк на основе номера переменной ширины в фиксированном положении
  • Что означает -k1,1 в сортировке
  • Почему сортировка меняет порядок строк с одинаковыми ключами сортировки?
  • Как сортировать по вертикали и по горизонтали?
  • Сортировка по пользовательскому шаблону
  • Почему параметры сортировки -c (проверьте, отсортированы) и -o (запись в выходной файл), не совместимы
  • Сортировка перед отправкой вывода на терминал
  • Как отсортировать файл по столбцу, представляющему собой сочетание цифр, букв и знаков препинания?
  • Использование сортировки с алфавитно-цифровыми именами файлов
  • что является разделителем по умолчанию для опции sort -k
  • Linux и Unix - лучшая ОС в мире.