La imagen que muestra etiqueta los puntos de inicio de las diferentes partes, y las líneas en zigzag -en el cuadro "Entradas 5 -128" significan que el cuadro no está dibujado a escala. Representa un bloque de 31 sectores LBA, pero visualmente se dibuja alrededor de 2 -3 veces el tamaño de un bloque de un -sector. Las etiquetas cuentan la historia real, por lo que el primer sector LBA que puede usar para una partición es #34, que es 34 *512 = 17408 bytes desde el principio.
Sin embargo, eso no significa que deba iniciar una partición allí. Con los discos modernos (grandes )que tienen un tamaño de bloque físico de 4096, probablemente desee iniciar las particiones en un límite que se alinee con eso. Es bastante común comenzar en LBA 2048, es decir, 1 MB, lo cual es excesivo para ese propósito, pero al menos no tendrá problemas de alineación en el futuro cercano.
Por lo general, el software de partición que utilice elegirá los puntos de inicio apropiados para las particiones y se asegurará de no superponer otras particiones o la tabla de particiones.
Это не совсем задокументированное поведение, но в целом это расширение. Все три команды, которые были расширены аналогичным образом (a
, i
и c
), ведут себя так же, как :начальный пробел игнорируется, и если текст начинается с \
, то он отбрасывается. По сути, не имеет значения, какая из этих форм используется :
i foo
i \foo
i \
foo
Они все одинаковые. (Я знаю, что использовал i
здесь, но проверьте описания a
, i
и c
-, это сюрреалистично.)
И код показывает столько же:
1111 case 'a':
1112 case 'i':
1113 case 'c':
1114 ch = in_nonblank ();
1115
1116 read_text_to_slash:
1117 if (ch == EOF)
1118 bad_prog (_(EXPECTED_SLASH));
1119
1120 if (ch == '\\')
1121 ch = inchar ();
Стандартной формой команды a
в sed
является
a\
text to be appended
Команды c
и i
имеют одинаковый формат.
Если должны быть добавлены дополнительные строки, новая строка каждой должна быть экранирована:
a\
text to\
be appended
Стандарт sed
не знает, как интерпретировать \n
как новую строку, как это делает GNU sed
, поэтому ваша однострочная команда с не -GNU sed
будет записана (вbash
)как
sed $'/test/a\\\n\\\nNot a test\\\nJust Playing\n' <<<test
Здесь мы используем $'...'
, чтобы заставить оболочку заменить каждый \n
фактическим символом новой строки и \\
на \
.
Команда может быть записана следующим образом без функции $'...'
вbash
:
sed '/test/a\
\
Not a test\
Just Playing
' <<<test
Обе эти команды будут работать и с GNU sed
.
GNU sed
дополнительно позволяет добавленному тексту появляться без промежуточной новой строки между ним и предшествующим a
и позволяет полностью отбрасывать \
, , но будет интерпретировать \
сразу после a
как обратную косую черту в стандартной форме a\
команды(это основная проблема в вашем вопросе ). GNU sed
также добавляет новую строку в конце присоединяемого текста в скрипте. Так что с GNU sed
вы могли бы написать
sed '/test/a\ \
Not a test\
Just Playing' <<<test
или, используя тот факт, что GNU sed
знает \n
,
sed '/test/a\\nNot a test\nJust Playing' <<<test