我有一个包含一堆整数的文件,如下所示:
6
2
3
4
3
Run Code Online (Sandbox Code Playgroud)
目标是像在电子游戏中一样转换统计数据中的这些整数,例如,如果数字是 6,则统计数据必须是******----,如果数字是 4,则结果必须是****------。
我尝试了以下代码,但不起作用:
6
2
3
4
3
Run Code Online (Sandbox Code Playgroud)
使用 Perl:
perl -ne 'print("*" x $_, "-" x (10-$_), "\n")' file
Run Code Online (Sandbox Code Playgroud)
$_包含当前行
输出:
******---- **-------- ***------- ****------ ***-------
你可以使用这个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)