📅  最后修改于: 2023-12-03 15:29:35.804000             🧑  作者: Mango
有时候在处理文本文件中我们需要统计特定字符串出现的次数,Bash提供了一种简单的方法来实现该功能,即使用关联数组。
Bash中的关联数组是一种特殊的数组类型,它的索引可以是任意非空字符串,而不仅仅是数字索引。因此,我们可以使用字符串来索引数组元素,例如:
# 定义一个关联数组
declare -A fruits
# 给数组元素赋值
fruits["apple"]=100
fruits["banana"]=200
# 访问数组元素
echo "Apple costs ${fruits["apple"]} cents"
在上面的例子中,我们定义了一个关联数组fruits
,apple
和banana
是该数组的索引,100
和200
是对应的值。我们可以使用${fruits["apple"]}
来访问数组元素。
现在我们已经了解了关联数组的基础知识,我们可以使用它来统计字符串在文件中出现的次数。例如,我们有一个文件example.txt
包含以下内容:
apple
banana
orange
apple
pear
我们要统计apple
、banana
、orange
和pear
分别出现的次数,可以使用下面的脚本:
#!/bin/bash
# 定义关联数组
declare -A count
# 从文件中逐行读取数据
while read line; do
# 遍历每个单词,并更新计数器
for word in $line; do
count["$word"]=$((${count["$word"]}+1))
done
done < example.txt
# 输出结果
for word in "${!count[@]}"; do
echo "$word: ${count["$word"]}"
done
在上面的例子中,我们首先定义了一个关联数组count
,用于存储每个单词出现的次数。然后,我们使用while read
命令从文件中逐行读取数据,并使用for
循环遍历每个单词。对于每个单词,我们使用${count["$word"]}
来访问它在count
数组中的计数器,然后将其加1并更新回数组中。最后,我们遍历count
数组的索引,并输出每个单词出现的次数。
上面的脚本将会输出:
apple: 2
banana: 1
orange: 1
pear: 1
通过使用Bash的关联数组,我们可以很容易地统计文本文件中特定字符串的出现次数。这种方法的优势在于简单、有效,并且不需要额外的工具或库来实现。因此,我们可以用它来解决许多文本处理任务。