加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

直方图与bash

发布时间:2020-12-16 01:18:01 所属栏目:安全 来源:网络整理
导读:目前我使用: #!/bin/bashwhile read linedo ((histogram[${#line}]++)) done "${1:-/dev/stdin}"for length in "${!histogram[@]}"; do printf "%-1s %sn" "${length}" "${histogram[$length]}"done 生成直方图输出.但如果没有长度行,输出会自动省略它们.
目前我使用:
#!/bin/bash
while read line
do
    ((histogram[${#line}]++))   
done < "${1:-/dev/stdin}"

for length in "${!histogram[@]}"; do
    printf "%-1s %sn" "${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 %sn" "${length}" "${histogram[$length]-0}"
done

示例运行:

$printf 'xnfoon' | ./test.sh
0 0
1 1
2 0
3 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读