直方图与bash

目前我使用:
#!/bin/bash
while read line
do
    ((histogram[${#line}]++))   
done < "${1:-/dev/stdin}"

for length in "${!histogram[@]}"; do
    printf "%-1s %s\n" "${length}" "${histogram[$length]}"
done

生成直方图输出.但如果没有长度行,输出自动省略它们.有没有办法让函数不省略那些行?有任何想法吗?

你的意思是你想要为每个非发生长度打印一个零,直到最大长度?如果是这样:
$cat test.sh 
#!/bin/bash
while read line
do
    ((histogram[${#line}]++))
done < "${1:-/dev/stdin}"

max=0
for length in "${!histogram[@]}"
do
    if [ $length -gt $max ]
    then
        max=$length
    fi
done

for length in $(seq 0 $max)
do
    printf "%-1s %s\n" "${length}" "${histogram[$length]-0}"
done

示例运行:

$printf 'x\nfoo\n' | ./test.sh
0 0
1 1
2 0
3 1

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...