В настоящее время я пишу пакетный скрипт для чтения и изменения некоторых файлов конфигурации в 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 expression #1, char 11: extra characters after command
sed 's/^^ */^&\n/ :loop s/.*/asdf/ b loop'
- Сбой с sed: -e expression #1, char 12: unknown option to
s'`
Я просто не уверен, связана ли моя ошибка с моим основным утверждением из-за неправильного синтаксиса или просто из-за того, что я в Windows. Любые мысли или помощь, которые вы можете предоставить, были бы замечательными.