Всего две строки:
$ a="aaaaabbaabaabbaaddd"
$ echo "${a#"${a%%[^"${a:0:1}"]*}"}"
bbaabaabbaaddd
Действие объяснено:
"${a:0:1}" ## Select the first char of $a: ='a'
[^ ]* ## All chars not 'a' from the end. ='bbaabaabbaaddd'
"${a%% }" ## Remove 'bbaabaabbaaddd' from the end of $a. ='aaaaa'
echo "${a# }" ## Remove 'aaaaa' from start of $a and echo it.
(-) Оба расширения нуждаются в кавычках, чтобы правильно работать с * и /. { {1}} По-прежнему существует проблема, заключающаяся в том, что обратные кавычки обычно неправильно обрабатываются:
a="\\\\*\\\\*****vdf*"; echo "${a#"${a%%[^"${a:0:1}"]*}"}"
Будет напечатано:
*\\*****vdf*
Первоначальная повторяющаяся строка была правильно удалена, но следующие четыре обратной косой черты были преобразованы всего в две.