建立Ascii艺术图

时间:2018-01-22 15:40:01

标签: linux bash unix

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

我有一个包含以下内容的文件:

April = 90
October = 80

是否有一些使用ASCII艺术创建图表的方法 像这样:

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

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

1 个答案:

答案 0 :(得分:1)

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

=

说明:

  • printf "%.0s=" $(seq 1 5) # output -> ===== :它只打印一系列以空格分隔的整数,从seq 1 51(即5

1 2 3 4 5格式字符串printf的增量说明:

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

所以基本上要完成你的任务,你必须逐行解析输入,以获得条的实际=month,将它们存储到变量中,然后打印吧,你可以使用这样的东西:

lenght

示例结果为:

  

四月
  [====================]