Это потому, что *
не делает то, что вы думаете, что делает. В регулярном выражении sed
, как и во всех регулярных выражениях, используйте .*?
для обозначения любого набора символов (кроме символов новой строки). Это потому, что .
означает совпадение с чем-либо один раз, а *
означает совпадение с предыдущим элементом любое количество раз. ?
делает его не жадным, что означает, что он будет соответствовать как можно меньшему количеству символов, если совпадает остальная часть выражения. Я не знаю, что вы вводите, поэтому я не могу сказать, нужен ли вам знак вопроса, лучше, чем потом сожалеть.