Подтвердить что ты не робот

Как глобально заменить строки в строках NOT, начиная с определенного шаблона

Я хочу глобально заменить строку foo на строку строки, используя sed. Это нужно делать только для строк, которые НЕ начинаются со строки ## Input.

Я не могу заставить его работать. Я пробовал такие вещи, но дошел до точки, где я не уверен, знаю ли я, что я делаю:

sed -i '/^##Input/ s/foo/bar/g' myfile

Пожалуйста, помогите!

4b9b3361

Ответ 1

Вам просто нужно отменить соответствие, используя !:

sed -i '/^##Input/! s/foo/bar/g' myfile

Ответ 2

Вам нужно уйти #, как в \#.

Ответ 3

Уродливый ответ за уродливый запрос (т.е. они получают то, что они просили):

echo \{
for file in *.json; do
    sed -n '/^[\{\}]/! s/\([^\,]\)$/\1,/; /^[\{\}]/!p' $file
done
echo \{