Как это?
printf "%-4.4s\n" ????-* | uniq
Оболочка расширяет подстановочный знак в алфавитном порядке и передает результат в качестве аргументов в printf
. Строка формата усекает каждый аргумент до четырех символов и добавляет новую строку. Теперь осталось только удалить соседние дубликаты.
Если вы не знаете количество цифр перед дефисом, но у вас есть идея, вы можете перебрать некоторые кандидаты в цикле:
for expr in '??' '???' '????' '?????' # Quoted (!)
do
printf "%-${#expr}.${#expr}\n" $expr-* | # Unquoted!
uniq
done
Здесь используется расширение параметра только для Bash$[# var}
, который получает длину строки $var
.
Обратите внимание на хитрость заключения подстановочных знаков в кавычки, чтобы избежать их раскрытия при инициализации цикла, а затем использование переменной без кавычек внутри цикла (что недопустимо в большинстве других случаев).
Согласно журналам, которые вы опубликовали, одна из проблем в процессе выключения связана с остановкой зашифрованного диска подкачки.
Используете ли вы зашифрованный диск подкачки? Вы недавно проверяли его монтирование, использование и размонтирование/остановку?
.