Проблемы со сценарием sed, использующим блок фигурных скобок с доморощенным gnu sed

У меня проблемы со старым сценарием sed, который я выкопал из архивов, которые хорошо работали много лет назад, но сейчас нет.

Старый сценарий был сложным, с множественными заменами между фигурными скобками, но даже на самом деле он был просто сдвинут к одной замене, я не могу заставить его работать сейчас.

Я пытаюсь использовать его с домашним пивом gnu-sed в Mac OS X 10.11 El Capitan, но у меня возникли те же проблемы с Debian, так что это похоже на проблему, специфичную для gnu sed. Он работает с обычной OS X /usr/bin/sed, но не с gnu sed, которую я предпочел бы использовать для переносимости.

Нужны ли gnu sed разные флаги, чтобы разрешить использование фигурных скобок или что-то еще в этом направлении? во всех случаях ниже команда sed ссылается на /usr/local/bin/gsed на компьютере с OS X. Я полагаю, что я мог бы просто использовать OS X sed, но это не помогло бы мне на Linux, если мне нужно использовать сценарий там.

Благодарю.

Я получаю ошибку

sed: file script_file line 3: extra characters after command

Вот мой простой двухстрочный файл данных.

[[aaaaaaaaaaaaaaaa]]
aaaaaaaaaaaaaaaaaa

Вот правильный вывод, если сценарий успешно выполнен.

[[bbbbbbbbbbbbbbbb]]
aaaaaaaaaaaaaaaaaa

Вот сценарий sed, который не работает при сохранении в файле.

/\[\[.*\]\]/{
s/a/b/g
}

Вот команда, которую я использую для запуска.

sed -f script_file data_file

Если я уберу фигурные скобки в файле, он будет работать, но тогда я не смогу применить несколько подстановок к одному и тому же пространству шаблона. Вот версия файла скрипта, которая работает без проблем.

 /\[\[.*\]\]/s/a/b/g

если я помещу все в командную строку, включая фигурные скобки, это также работает.

sed '/\[\[.*\]\]/{s/a/b/g}' data_file

Этот также работает с данными стандартного ввода.

Что мне нужно сделать, чтобы версия сценария с многострочными фигурными скобками для правильной работы с gnu sed?

0 ответов

Другие вопросы по тегам