Com awk & bash (para aqui-string <<<
recurso):
awk '
/^\$\$\$/{
sub(/\$\$\$/, "")
cmd=$0
next
}
{ arr[cmd]=arr[cmd] $0";"}
END{
for (a in arr) {
if (a ~ ".") {
exe=sprintf("%s", a " <<< 2" arr[a] "2" )
system(exe)
}
else{
print arr[a]
}
}
}' file
Saída:
1 ++----------***--+---------------****---------------+--***----------++
+ * * + * +* + *cos(x) ****** +
0.8 ++ * * * * * * ++
| * * * * * * |
0.6 ++ * * * * * * ++
| * * * * * * |
0.4 ++ * * * * * * ++
| * * * * * * |
0.2 ++ * * * * * * ++
0 ++ * * * * * * ++
| * * * * * * |
-0.2 ++ * * * * * * ++
| * * * * * * |
-0.4 ++ * * * * * * ++
| * * * * * * |
-0.6 ++ * * * * * * ++
| * * * * * * |
-0.8 *+ * * * * * * +*
+* * + * * + * * + * *+
-1 +***-------------+-----**----------+---------**-----+-------------***+
-10 -5 0 5 10
;;;Now it's time to visualize the cosine function:;;;Finally, a simple directed graph:;;
+---+
| A |
+---+
|
|
v
+---+
| B |
+---+
______ _
(_) |o | | o
| _|_ | | _
_ || | |/ |/
(_/ |_/|_/|__/|__/o
/
Não é nada demais modificá-lo um pouco para ser 100% compatível com sua demanda.