Удалите ^
и $
из команды и используйте флаг -o
команды grep, т.е.:
grep -Eo '(^| )(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[[:space:]])'
Пример:
echo 'some text 198.54.34.6 and test' | grep -Eo '(^| )(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[[:space:]])'
вывод:
198.54.34.6
Это даст пробелы, также попробуйте удалить их, используя tr
, например command1 | tr -d " "
.
tl;dr:Исправлено с помощью загрузки -Восстановление USB и монтирование корневого тома в initramfs для правильного имени устройства.
В конце концов я попробовал Boot -Repair (, иначе я бы просто переустановил все ). Из-за отсутствия файлов выпуска я не мог добавить репозиторий ни в Kubuntu, ни в Debian Live USB, но с помощью Boot -Repair Live USB я в конечном итоге смог загрузиться в initramfs
и должен был расшифровать том.
cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt
# lvm vgchange -ay
exit
Справедливости ради я не уверен, была ли нужна закомментированная команда, но я все равно ее сделал.Я должен был убедиться, что nvme0n1p3_crypt
совпадает с первым словом в /etc/crypttab
перед UUID. После команды выхода моя система загрузится (с, возможно, другим запросом пароля ). После успешной загрузки мне пришлось запустить
update-initramfs -k all -c
, и когда это сработало, не жалуясь на отсутствие (, в моем случае)nvme0n1p3_crypt
я смог перезагрузиться, как обычно. В противном случае термин nvme0n1p3_crypt
не соответствовал термину в /etc/crypttab
.
Тем не менее, я действительно не понимаю многого из того, что произошло, но я рад, что это сработало, и это может помочь другим.