Замена конца строки с помощью SED в make-файле - PullRequest
0 голосов
/ 26 апреля 2010

Как добавить SED в конец строки с помощью make-файла?

Я бегу

paste -d" " t.tex tE.tex | sed 's@$@XXX@' > tM.tex

, где проблема заключается в использовании знака $ для конца строки.

Я получаю

#paste -d" " t.tex tE.tex | sed -e s/" "/\\\&/g | sed -r "s/XXX/" > tM.tex
sed: -e expression #1, char 10: unterminated `s' command
make: *** [all] Error 1

У меня есть команда сразу после тега "all:" в моем make-файле, который содержит только две строки.

Параметры -n и -e здесь не помогают. Команда работает так, как ожидается, если она запускается непосредственно в терминале.

Ответы [ 2 ]

4 голосов
/ 26 апреля 2010

Символ $ - это специальный символ в Makefiles. Чтобы получить литерал $ в команде, нужно заключить его в кавычки, добавив к нему префикс: $$. Для получения дополнительной информации см. 6.1 Основы ссылок на переменные в руководстве по сборке GNU.

0 голосов
/ 26 апреля 2010

Вы пропустили последний "/" из последней команды sed.

  paste -d" " t.tex tE.tex | sed s/" "/\\\&/g | sed -r "s/XXX//" > tM.tex

для Linux это нормально работает, однако не содержит $ char, о котором говорит ваша проблема

...