直方图与bash

前端之家收集整理的这篇文章主要介绍了直方图与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

猜你在找的Bash相关文章