使用bash关联数组统计单词

int32位 posted @ Mar 22, 2016 03:55:00 PM in linux , 1206 阅读
转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!

 

从bash 4开始支持关联数组,使用前需要声明,即

declare -A map
map[key1]=value1
map[key2]=value2
map=([key1]=value1 [key2]=value2)
# 获取keys
keys=${!map[@]}
# 获取values
values=${map[@]}

利用关联数组,很容易实现单词统计,源码文件wordCount.sh

#!/bin/bash
if [[ $# -lt 1 ]]
then
    echo "Usage: $0 <filename>"
    exit 1
fi
file=$1
declare -A count
for word in $(grep -P -o '\b\w+\b' $file)
do
    let count[$word]++
done
for word in ${!count[@]}
do
    printf "%-14s%s\n" $word ${count[$word]}
done

使用方法

./wordCount.sh filename

或者从标准流中使用,如

echo "Hello World! GoodBye World!" | ./wordCount.sh -

输出为

Hello         1
World         2
GoodBye       1
转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!
  • 无匹配
  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter