Ошибка дополнительных символов с помощью sed при использовании фигурных скобок или циклов

В настоящее время я пишу пакетный скрипт для чтения и изменения некоторых файлов конфигурации в Windows. К счастью, у меня есть доступ к сказанному, и поэтому я могу использовать его для большей части того, что мне нужно делать, хотя и с некоторыми причудами, связанными с окружающей средой.

Я хотел бы выполнить следующее заявление:

sed '/\[$/{:loop N /^^]/!b loop} s/\n//g'

Который теоретически должен удалить любые символы новой строки в строках между строками с квадратными скобками. Здесь я использую двойные символы вставки, чтобы избежать и использовать второй (причуда cmd.exe ). Однако это не удается из-за следующей ошибки:

sed: -e expression #1, char 15: extra characters after command

При тестировании некоторых других утверждений я получил следующие результаты.

sed '/ \ [/ {s /.*// g}' - Выполняется так, как должно

sed '/ \ [/ {N} s /.*// g' - Ошибка sed: -e выражение # 1, char 11: дополнительные символы после команды

sed 's / ^^ * / ^ & \ n /: loop s /.*/ asdf / b loop' - Ошибка с sed: -e выражение # 1, char 12: неизвестный параметр для s'`

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

6
задан Benjamin W. 23 March 2016 в 00:38
поделиться