Итак, у вас есть физическое устройство /dev/vda размером 751619276800 и два раздела размерами: 750543241216 и 1073741824. Нераспределено всего 2293760 байт (2 МБ).
Неправда, что размер вашего раздела намного меньше доступного места: ваш раздел имеет максимальный размер, который он может иметь, и у вас есть свободное место на этом разделе. Если вы хотите иметь больше разделов, вы должны сжать /dev/vda1 и создать еще один раздел, но я бы этого не сделал.
Если вы хотите изменить размер разделов в существующей системе, вам следует использовать LVM.
РЕДАКТИРОВАТЬ:
Согласно справке btrfs:
файловая система btrfs df Показать информацию об использовании пространства для точки монтирования файловая система btrfs show [options] [
| | |метка] Показать структуру файловой системы
Как видите, btrfs fi show
утверждает, что /dev/vda1 имеет размер 699, а используется 576. Если вы просуммируете данные, систему и метаданные в общем , это даст вам 576.
См. эту ссылку для справки.
Вы можете с помощью GNU sed
:
$ sed -r 's/(GSM[0-9]{5})(AATF)/\1\n\2/' file.in >file.out
Шаблон соответствует первой части, а затем второй части в двух отдельных группах захвата. Я предположил, что первой частью всегда будет GSM
, за которой следуют пять цифр. Замена просто вставляет захваченные данные из двух групп с новой строкой между ними.
-r
необходим, потому что я использовал расширенное регулярное выражение. Некоторые реализации sed
используют -E
вместо -r
для таких регулярных выражений.
В системах без GNU sed
:
$ sed 's/\(GSM[0-9]\{5\}\)\(AATF\)/\1\
> \2' file.in >file.out
То есть используйте BRE вместо ERE (и удалите расширение -r
GNU), просто добавьте \
и нажмите return после \1
и продолжите шаблон замены на следующей строке. >
— это подсказка, а не то, что вы вводите.
Это работает на моем Mac и различных дистрибутивах Linux:
#!/usr/bin/env bash
PATTERN="(GSM[0-9]{5})(AATF)"
sed -E -e $"s_${PATTERN}_\1\\
\2_g" < file_with_values
Где:
PATTERN
:вы можете определить шаблон в переменной, что упрощает чтение выражения подстановки sed -E -e
:установите sed
для использования расширенного регулярного выражения (-E )и для использования предоставленного скрипта (-e)$"..."
:используется для перевода строк и допускает использование переменных. Посмотрите здесь:bash, цитирующий . Это может быть безопасно не во всех ситуациях, но в вашем случае все должно быть в порядке s_..._...\2_g
:— строка замены; Я использую _
в качестве разделителей, так что вам не нужно экранировать /
и, учитывая, что вам нужны группы захвата(\1
и \2
), это просто облегчает чтение строки. Обратите внимание на \\
, за которым следует новая строка. $"..."
позволяет использовать новые строки Если вам не нужны переменные, вы можете использовать $'....'
, то есть знак доллара в одинарных кавычках. В этом случае вы можете использовать \n
, но не можете вставить новую строку
Использование $"..."
кажется вполне переносимым :мой код с похожей реализацией работает на docker alpine, centos, debian, fedora, ubuntu.