📅  最后修改于: 2023-12-03 15:02:41.935000             🧑  作者: Mango
在 Linux 系统中,我们可以使用 Shell 来统计一个文件中某个单词出现的次数。下面将会介绍两种实现方式。
最简单的方法是使用 grep 命令搭配 wc 命令实现。grep 命令用于查找匹配的字符串,wc 命令用于计算字符数、单词数、行数等。
先来看一个示例,统计 "Hello" 这个单词在文件 test.txt 中出现的次数:
grep -o "Hello" test.txt | wc -l
解释一下上面的命令:
这样,我们就可以得到 "Hello" 在文件 test.txt 中出现的次数了。
接下来,将上述命令封装成一个脚本 count_word.sh:
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: $0 word filename"
exit 1
fi
grep -o $1 $2 | wc -l
保存并赋予该脚本可执行权限:
chmod +x count_word.sh
使用示例:
./count_word.sh "Hello" test.txt
输出:
3
除了使用 grep 命令,我们还可以使用 awk 命令来实现。awk 是一种文本处理工具,它处理文本时按行来进行处理,将文件中每一行看成一个记录,将每一行分成若干个字段进行处理。
下面是用 awk 实现统计单词出现次数的脚本 count_word_with_awk.sh:
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: $0 word filename"
exit 1
fi
awk -v word="$1" '{ for (i=1; i<=NF; i++) if ($i == word) n++; } END { print n }' $2
解释一下上述脚本:
使用示例:
./count_word_with_awk.sh "Hello" test.txt
输出:
3
以上两种方法都可以统计文件中单词出现的次数,不过使用 awk 命令比较灵活,可以统计多个单词。不过,如果文件比较大,awk 命令需要对整个文件进行遍历,可能会比 grep 命令慢一些。