#!/bin/sh -efu ### This file is covered by the GNU General Public License ### version 2 or later. ### ### Copyright (C) 2019 ALT Linux Team ### Author: Leonid Krivoshein grubmenu="$(mktemp -q "${TMPDIR-/tmp}/grubmenu-XXXXXXXX.tmp")" sed \ -re '/^\s*(menuentry\s+|submenu\s+|})/!d' \ -re "s/^\s*menuentry\s+'([^']+)'.*\$/M \1/g" \ -re "s/^\s*submenu\s+'([^']+)'.*\$/S \1/g" \ -re "s/^\s*}\s*\$/E -/g" > "$grubmenu" # Debug #cat "$grubmenu" #rm -f "$grubmenu" #exit number= prefix= entry=0 itemno=0 while read mode title do case "$mode" in M) echo "${number}${itemno} ${prefix}${title}" itemno=$(($itemno + 1)) entry=1 ;; S) number="${number}${itemno}>" prefix="${prefix}${title}>" itemno=0 ;; *) if [ $entry -ne 0 ]; then entry=0 elif [ -n "$number" ]; then number="${number%>}" prefix="${prefix%>}" case "$number" in *">"*) itemno="${number##*>}" number="${number%>*}" prefix="${prefix%>*}" itemno=$(($itemno + 1)) ;; *) itemno=$number itemno=$(($itemno + 1)) prefix= number= ;; esac fi ;; esac done < "$grubmenu" rm -f "$grubmenu"