Sed ошибка "команда ожидает \ сопровождается текстом"

Вот мой сценарий:

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null |
sed 's/ECHO: \"\[LC\] //' |
sed 's/"$//' |
sed '$a;' >./2d_$1

Этот вывод:

sed: 1: "$a;": command a expects \ followed by text

2 ответа

Решение

Ваша версия sed это не GNU sed что позволяет то, что вы используете. Вам нужно написать:

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null |
sed 's/ECHO: \"\[LC\] //' |
sed 's/"$//' |
sed '$a\
;' >./2d_$1

Также три копии sed немного чрезмерно (чтобы быть вежливым); достаточно одного:

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null |
sed -e 's/ECHO: \"\[LC\] //' \
    -e 's/"$//' \
    -e '$a\' \
    -e ';' >./2d_$1

или же:

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null |
sed -e 's/ECHO: \"\[LC\] //' -e 's/"$//' -e '$a\' -e ';' >./2d_$1

В MacOS при попытке использовать команду «a» работает следующее:

      sed '/REGEX/a \
    HELLO_WORLD \
    HOW_ARE_YOU \
' <filePath>
Другие вопросы по тегам