linux добавление файлов - PullRequest
       1

linux добавление файлов

1 голос
/ 12 декабря 2010

У меня есть программа, которую я обычно запускаю так: a.out<guifpgm.txt>gui.html

Если a.out - моя скомпилированная программа c, guifpgm.txt - это входной файл, а gui.html - выходной файл. Но я действительно хочу взять вывод from a.out<guifpgm.txt и вместо того, чтобы просто заменить все, что находится в gui.html выводом, поместить вывод в середине файла.

Так что-то вроде этого: Для начала gui.html содержит следующее: <some html>CODEGOESHERE<some more html> вывод в a.outalert («это что-то динамически генерируемое»);

Я хочу, чтобы gui.html содержал следующее: <some html>alert("this is some dynamically generated stuff");<some more html>

Как я могу это сделать?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 12 декабря 2010

Звучит так, как вы хотите заменить текст.Для этого используйте sed, а не C:

sed -i s/CODEGOESHERE/alert(\"this is some dynamically generated stuff\")/g gui.html

Если вам действительно нужно запустить a.out, чтобы получить его вывод, сделайте что-то вроде:

sed -i s/CODEGOESHERE/`a.out`/g gui.html
2 голосов
/ 12 декабря 2010

В итоге я воспользовался функцией linux cat.output a.out>guifpgm.txt>output.txt.Тогда сделал cat before.txt output.txt after.txt > final.txt

1 голос
/ 12 декабря 2010

Упрощение метода вашего кота было бы использовать

./a.out < guifpgm.txt | cat header.txt - footer.txt  > final.txt

. - заменяется на STDINЭто несколько сокращает промежуточные файлы.Использование > вместо >> перезаписывает содержимое файла final.txt, а не добавляется.

0 голосов
/ 12 декабря 2010

Просто для удовольствия ... Решение awk для программы a.out выглядит следующим образом: файл шаблона template, который должен заменить строку «ЗАМЕНИТЕ МЕНЯ».Это помещает полученный результат в output_file.txt.

awk '/^REPLACE ME$/{while("./a.out <input.txt"|getline){print $0}getline} {print $0}' template > output_file.txt 

EDIT: небольшая коррекция для добавления входного файла, удаления UUOC и исправления незначительной ошибки (последняя строка a.out печаталась дважды)

В качестве альтернативы ... perl:

perl -pe '$_=`./a.out <input.txt` if /REPLACE ME/' template > output_file.txt

Хотя выделенные perlers, вероятно, могли бы добиться большего успеха

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...