Да, жадно.
В POSIX-совместимой системе не только sed
, но и все инструменты, которые используют Базовое регулярное выражение , соответствующий шаблон всегда будет жадным :
Поиск совпадающей последовательности начинается с начала строки и останавливается, когда обнаруживается первая последовательность, соответствующая выражению, где "первый" определяется как "начинается с самого раннего в строке" . Если шаблон допускает переменное количество совпадающих символов и, таким образом, существует более одной такой последовательности, начинающейся с этой точки, совпадает самая длинная такая последовательность . Например, BRE «bb *» соответствует второму-четвертому символам строки «abbbc», а ERE «(wee | week) (knights | night)» соответствует всем десяти символы строки "weeknights".
В соответствии с тем, что все совпадение является самым длинным из крайних левых совпадений , каждый подшаблон слева направо должен соответствовать самой длинной возможной строке. Для этой цели пустая строка должна считаться длиннее, чем полное отсутствие совпадений . Например, при сопоставлении BRE "(. ). " с "abcdef" подвыражение "(\ 1)" будет "abcdef", а соответствует BRE «(a *) *» против «bc», подвыражение «(\ 1)» является пустой строкой.
Шаблон a \ {0,2 \}
соответствует любому вхождению символа a
между нулем и двумя. Нулевое вхождение означает пустую строку, которая считается длиннее, чем несоответствие, как указано в спецификации.
Проблема с вашим использованием заключается в том, что вы не использовали лобальный флаг g
для команды sed
s
ubstitution. Без лобового флага g
sed
прекратит выполнение s
ubstitution, как только найдет первое совпадение, то есть пустую строку в начале строки.
Общая форма \ {m, n \}
с 0 , с
RE_DUP_MAX
это 32767
на большинстве платформ:
$ getconf RE_DUP_MAX
32767
prueba el comando dd desde /dev/urandom algo como esto:
dd if=/dev/urandom of=/<path_to_file> bs=2048 conv=noerror,sync count=999999