我有一个程序,我通常这样运行: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>
我该怎么做?
谢谢!
答案 0 :(得分:3)
听起来你想替换文字。为此,请使用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
答案 1 :(得分:2)
我最终使用了linux cat
函数。 output a.out>guifpgm.txt>output.txt
。然后做了cat before.txt output.txt after.txt > final.txt
答案 2 :(得分:1)
简化cat方法就是使用
./a.out < guifpgm.txt | cat header.txt - footer.txt > final.txt
-
替换为STDIN
的输入。这有点削减了中间文件。使用>
代替>>
会覆盖final.txt的内容,而不是附加。
答案 3 :(得分:0)
只是为了它的乐趣......对于需要替换“REPLACE ME”行的程序a.out
,模板文件template
,awk解决方案如下。这会将结果输出放在output_file.txt
。
awk '/^REPLACE ME$/{while("./a.out <input.txt"|getline){print $0}getline} {print $0}' template > output_file.txt
编辑:稍加修正以添加输入文件,删除UUOC并修复一个小错误(a.out的最后一行被打印两次)
或者...... perl:
perl -pe '$_=`./a.out <input.txt` if /REPLACE ME/' template > output_file.txt
虽然专职演员可能会做得更好