Создайте раздел с точным размером не к определенному расстоянию

sed 's/ [ ]* / /g'
\_/  | \____/ | |
 |   |    |   | \- g=globally (not just one occurence)
 |   |    |   |
 |   |    |   \- to
 |   |    |
 |   |    \- from
 |   |
 |   \- s=substitute
 |
 \- program sed

От части:

/ [ ]* /
| \_/| 
|  | \- repeated 0-infinite times
|  |
|   \- group of characters
|
\- boundary

Включая *, существует 3 квантора:

  • 0 к бесконечности? 0 или 1 раз
  • 1 к бесконечности

Они обычно только обращаются к последнему знаку, таким образом, x* соответствует x, xxxx и ничему. x? соответствия 0 или 1 x, + соответствует x, xx, xxx и так далее. Но это может соответствовать группе символов как [aeiou] + или комбинация, инкапсулировавшая в parens: (нечто) *. Первые соответствия iiaiaei, второе нечто и foofoo.

Группа может быть перечислением [aeiou] или от - для группировки: [a-z] или комбинация: [0-9a-fA-F:]. Если Вам нравится включать минус в группу, необходимо поместить ее в конец или начало: [-:].

Наиболее используемая команда, вероятно', для замены. Другие являются 'd' для, удаляют и 'p' для печати.

Шаблоны инкапсулируются между разделителями, обычно режут.

 sed 's/foo/bar/' 

Строка работ Sed ориентирована. Если Вам нравится заменять один (первое), нечто с панелью, выше команды хорошо. Для замены всех Вам нужен 'g' для глобально.

 sed 's/foo/bar/g' 

Другие способы работать с sed вызывают номера строки:

 sed -n '1,5p' file 

- n не распечатает по умолчанию, 1,5p средства: печать от строки 1 - 5.

 sed '6,$d' file 

Это эквивалентно. Это удалит из строки 6 для окончания.

 sed '5q' file

снова то же: выход после строки 5.

Обычно для sed, который команды более легки записать, чем читать.

11
11.09.2013, 14:46
1 ответ

Я думаю parted только принимает абсолютные понятия, нет x+y.

Вы могли сделать это как это: (+ интерпретируемый оболочкой)

# start=1
# size=512
# parted /dev/loop0 unit mib mkpart primary $start $(($start+$size))
# parted /dev/loop0 unit mib print free
Model: Loopback device (loopback)
Disk /dev/loop0: 1000MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start    End      Size     File system  Name     Flags
        0.02MiB  1.00MiB  0.98MiB  Free Space
 1      1.00MiB  513MiB   512MiB                primary
        513MiB   1000MiB  487MiB   Free Space

... и если Вы хотите добавить больше, затем

# start=$(($start+$size+1))
# size=128
# parted /dev/loop0 unit mib mkpart primary $start $(($start+$size))
# parted /dev/loop0 unit mib print free                           
Model: Loopback device (loopback)
Disk /dev/loop0: 1000MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start    End      Size     File system  Name     Flags
        0.02MiB  1.00MiB  0.98MiB  Free Space
 1      1.00MiB  513MiB   512MiB                primary
        513MiB   514MiB   1.00MiB  Free Space
 2      514MiB   642MiB   128MiB                primary
        642MiB   1000MiB  358MiB   Free Space

+1 является совершенно дополнительным, я точно так же, как отъезд свободных "бамперов" на 1 МиБ между разделами, по некоторым причинам.

Если Вы хотите иметь дело с процентами, можно получить размер устройства из оболочки также, с помощью blockdev --getsize64 /dev/device, таким образом, можно переместить всю математику из разделенного на сценарий оболочки. Я делаю это для гарантии выровненных мебибайт разделов, поскольку я никогда не слишком уверен в какой parted средства точно -a optimal.

7
27.01.2020, 19:59

Теги

Похожие вопросы