По умолчанию sed
использует BRE, и для использования ERE потребуется опция -E
или -r
Цитата из Руководство GNU sed
In GNU sed the only difference between basic and extended regular expressions is in the behavior of a few special characters: ‘?’, ‘+’, parentheses, braces (‘{}’), and ‘|’.
With basic (BRE) syntax, these characters do not have special meaning unless prefixed backslash (‘\’); While with extended (ERE) syntax it is reversed: these characters are special unless they are prefixed with backslash (‘\’).
поэтому для GNU sed
используйте
$ echo '../../sdd1' | sed 's:.*\([a-z]\{3\}\)[0-9]\?:\1:'
sdd
$ echo '../../sdd1' | sed -E 's:.*([a-z]{3})[0-9]?:\1:'
sdd
для POSIX BRE , ваша вторая команда — путь
$ echo '../../sdd1' | sed 's:.*\([a-z]\{3\}\)[0-9]\{0,1\}:\1:'
sdd
Я знаю, что это поздний ответ, но для тех, кто все еще пытается его найти, вот мое решение :вы можете создать комбинированный образ.efi с ядром, командной строкой и initramfs внутри, называемый «унифицированным образом ядра».
Ссылка:https://wiki.archlinux.org/index.php/Systemd-boot#Preparing_a_unified_kernel_image