Ответ 1
Насколько я знаю, sed
не имеет ни взгляда, ни взгляда. Перейдите на более мощный язык с похожим синтаксисом, например perl
.
Это то, что я делаю (упрощенный пример):
gsed -i -E 's/^(?!foo)(.*)$/bar\1/' file.txt
Я пытаюсь поставить bar
перед каждой строкой, которая не начинается с foo
. Это ошибка:
gsed: -e expression #1, char 22: Invalid preceding regular expression
Что не так?
Насколько я знаю, sed
не имеет ни взгляда, ни взгляда. Перейдите на более мощный язык с похожим синтаксисом, например perl
.
sed -i '/^foo/! s/^/bar/' file.txt
-i
= > изменить файл на месте/^foo/!
= > выполнять следующее действие только в строках (!
), начиная с foo
(^foo
)s/^/bar/
= > изменить начало строки на бар
Вы используете синтаксис регулярного выражения, совместимого с perl, который не поддерживается GNU sed. Вы должны переписать свое регулярное выражение в соответствии с SED Regular-Expressions или использовать perl вместо этого.