通过各种命令管道传输文档片段

通过各种命令管道传输文档片段

我想$$$通过各种命令(可能带有修饰符)发送(可能使用转义序列,例如 )文章的片段。标准输入将被相应的标准输出替换。 (如有必要,使用 sed 删除非常特殊的修饰符应该足够简单。)

我相信我可以用 python 做到这一点...但我想知道是否有一种我不知道的特殊 UNIX 工具或技术可以优雅地完成 90% 的技巧。

更具体地说,请考虑以下文档:

$$$ figlet -f script
Title
$$$

Now it's time to visualize the cosine function:

$$$ gnuplot
set terminal dumb
plot cos(x)
$$$

Finally, a simple directed graph:

$$$ graph-easy
digraph G {
A -> B;
}
$$$

运行我的程序后我会得到:

 ______     _
(_) |o     | |
    |  _|_ | |  _
  _ ||  |  |/  |/
 (_/ |_/|_/|__/|__/


Now it's time to visualize the cosine function:


    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


Finally, a simple directed graph:

+---+
| A |
+---+
  |
  |
  v
+---+
| B |
+---+

任何想法将不胜感激。非常感谢,并欢呼!

答案1

&(为了这里的字符串 <<<特征 ):

awk '
    /^\$\$\$/{
        sub(/\$\$\$/, "")
        cmd=$0
        next
    }
    { arr[cmd]=arr[cmd] $0";"}
    END{
        for (a in arr) {
            if (a ~ ".") {
                exe=sprintf("%s", a " <<< \042" arr[a] "\042" )
                system(exe)
            }
            else{
               print arr[a]
            }
        }
    }' file

输出:

    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
                   /

稍微修改一下就可以100%符合你的需求,这没什么大不了的。

相关内容