将每个整数转换为简单的 ASCII 图形

151*_*511 5 bash

我有一个包含一堆整数的文件,如下所示:

6
2
3
4
3
Run Code Online (Sandbox Code Playgroud)

目标是像在电子游戏中一样转换统计数据中的这些整数,例如,如果数字是 6,则统计数据必须是******----,如果数字是 4,则结果必须是****------

我尝试了以下代码,但不起作用:

6
2
3
4
3
Run Code Online (Sandbox Code Playgroud)

Cyr*_*rus 6

使用 Perl:

perl -ne 'print("*" x $_, "-" x (10-$_), "\n")' file
Run Code Online (Sandbox Code Playgroud)

$_ 包含当前行

输出:

******----
**--------
***-------
****------
***-------


anu*_*ava 4

你可以使用这个awk

awk '{s = sprintf("%*s", $1, ""); gsub(/ /, "*", s); p = sprintf("%*s", 10-$1, ""); gsub(/ /, "-", p); print s p}' file

******----
**--------
***-------
****------
***-------
Run Code Online (Sandbox Code Playgroud)

更易读的版本:

awk '{
   s = sprintf("%*s", $1, "")
   gsub(/ /, "*", s)
   p = sprintf("%*s", 10-$1, "")
   gsub(/ /, "-", p)
   print s p
}' file
Run Code Online (Sandbox Code Playgroud)