linux - 构建 Ascii 艺术图

标签 linux bash unix

我有一个关于在 BASH 中创建 ASCII 图形的问题。

我有一个文件,其中包含:

April = 90
October = 80

有没有一些方法可以使用 ASCII 艺术创建图表 像这样:

April
    [=========================] 90

October
    [================] 80

最佳答案

使用 bash 一个可能的解决方案是使用 printfseq 结合使用来打印以零长度字符串转换的数字序列,后跟固定字符(在本例中为 =):

printf "%.0s=" $(seq 1 5) # output -> =====

说明:

  • seq 1 5:它仅打印从 15 的一系列以空格分隔的整数(即 1 2 3 4 5)

printf格式字符串%.0s=的增量解释:

  • %s:将后面的每个 printf 参数(即数字序列)格式化为字符串;
  • %.0s:添加点后跟一个整数(在本例中为.0)意味着如果该字符串大于数字则省略该字符串。因此,在这种情况下,0 意味着始终省略字符串。 %.s 形式是零前一个的较短等效版本;
  • %.s=:我们添加了 = 以使字符串(省略)后跟固定字符(在本例中为 =)。

因此,基本上要完成您的任务,您必须使用循环逐行解析输入,以获得实际的月份和条形图的长度,将它们存储到变量中,然后打印条形图,您可以使用类似的东西:

echo "${month}"
echo "    [$(printf "%.s=" $(seq 1 ${length}))]"

示例结果为:

April
      [====================]

关于linux - 构建 Ascii 艺术图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385233/

相关文章:

python - 将虚拟打印机的输出重定向到 Python 脚本

linux - Ubuntu 12.04 和 MPICH 性能

bash - 使用 shUnit2 在 bash 脚本中测试 "exit process command"

python - 如何在不同的目录中执行 python 脚本?

bash - 是否可以制作 .bat bash 混合体?

unix - zcat 管道到 grep

c - 写入 master pty,但无法读取 slave :(

c - 读取 posix 消息队列时文件描述符错误

unix - 将多个文件从本地 unix 移动到 HDFS

unix - unix 的字符串命令如何工作?