Замените одну строку STDIN в Make-файле

Взгляд на man emacsclient, Я вижу это -t совпадает с -nw и --tty, и они все делают: open a new Emacs frame on the current terminal. Если Вы просто отбрасываете -t, или замените его -c, --create-frame create a new frame instead of trying to use the current Emacs frame это должно работать. Я имею (server-start) в моем 'emacs, и мой $EDITOR установлен на "emacsclient", и он работает на меня. (Ubuntu 11.10, Гну Emacs 23.2.1)

5
29.01.2012, 22:35
2 ответа

Как сказанный arcege, не изменяйте фактический исходный файл. Так или иначе это намного легче с awk:

target:
    awk '{if($$0=="CONTENT"){system("perl Markdown.pl src/index.md")}else{print}}' src/template.html > build/template.html

Можно поместить это код awk в сценарий, если Вы хотите заставить строку выглядеть немного более чистой. (Если Вы делаете, изменение $$0 кому: $0, это необходимо, потому что иначе make-файл интерпретирует его),

target:
    awk -f convert.awk src/template.html > build/template.html
3
27.01.2020, 20:40

Одно правило состоит в том, что Вы не изменяете исходные файлы в сборке, таким образом, никакие оперативные модификации. Используйте каталог 'сборки' или что-то подобное.

template_markdown:
    @mkdir -p build
    cp -p src/template.html build
    (echo /CONTENT/c; perl Markdown.pl src/index.md; echo .; echo w) | ed - build/template.html

Это должно заботиться о любой ситуации где perl Markdown.pl не испускает период ('. ') отдельно.

2
27.01.2020, 20:40
  • 1
    я думаю выход, прочь: make template_markdown выводы sed "/CONTENT/s/.*//" src/template.html > build/template.html и build/template.html является результатом этого sed: строка, содержащая "СОДЕРЖАНИЕ", теперь просто \n. –  chelmertz 29.01.2012, 21:43
  • 2
    Да, я забыл директиву 'оболочки' в подстановке переменных. Отредактированный ответ. –  Arcege 29.01.2012, 21:53
  • 3
    я имею SHELL := /bin/bash на вершине, если это имеет значение. Вывод от второй подсказки: $ делают template_markdown sed "/CONTENT/s/. */perl src/Markdown_1.0.1/Markdown.pl src/index.md/" src/template.html> build/template.html sed: 1: "/CONTENT/s/.* / <h1> Proje...": плохой флаг в команде замены: 'h' делают: *** [template_markdown] Ошибка, которую 1$ совершает - v GNU, Делают 3,81 Copyright (C) 2006 Free Software Foundation, Inc. Это - бесплатное программное обеспечение; посмотрите источник для копирования условий. Нет НИКАКОЙ гарантии; даже для ВЫСОКОГО СПРОСА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. Для этой программы, созданной для процесса установки i386-apple-darwin11.0 –  chelmertz 29.01.2012, 21:56
  • 4
    Спасибо за подсказку, но это не вполне удалось для меня.Удачи. –  chelmertz 29.01.2012, 22:35
  • 5
    Первая проблема состоит в том, что Ваш вывод от жемчуга кажется более сложным, чем просто замена строки с текстом. Второе - то, что похоже, что это могут быть несколько строк, который sed не преуспевает, а также говорит, ed. Редактирование снова, чтобы быть немного более универсальным. –  Arcege 30.01.2012, 03:03

Теги

Похожие вопросы