📌  相关文章
📜  计算文件中单词的出现次数 linux 忽略大小写 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:57:31.325000             🧑  作者: Mango

计算文件中单词的出现次数 Linux 忽略大小写 - Shell-Bash

在 Linux 中,我们经常需要计算一个文件中每个单词出现的次数,可以用 Shell/Bash 脚本来实现。

程序实现

我们可以使用以下命令:

#!/bin/bash
# 统计文件中单词的出现次数,忽略大小写

if [ $# -ne 1 ]; then
    echo "usage: $0 filename"
    exit -1
fi

filename=$1

tr '[:upper:]' '[:lower:]' < "$filename" | tr -s '[:space:]' '\n' | sort | uniq -c | sort -rn

下面对上述代码片段进行说明:

  1. 首先,我们检查参数个数是否为 1,如果不是,则给出使用说明并退出。

    if [ $# -ne 1 ]; then
        echo "usage: $0 filename"
        exit -1
    fi
    
  2. 然后,我们将文件中所有的大写字母转换为小写字母。

    tr '[:upper:]' '[:lower:]' < "$filename"
    
  3. 接着,我们将文件中的所有空格替换为换行符,这样每个单词就会独立一行。

    tr -s '[:space:]' '\n'
    
  4. 我们使用 sort 对单词进行排序,并使用 uniq 命令来去重,并统计每个单词出现的次数。

    sort | uniq -c
    
  5. 最后,我们对单词出现次数进行降序排序,这样出现次数最多的单词将排在最前面。

    sort -rn
    
使用说明

使用 -h 选项来获取使用说明:

$ bash count_words.sh -h
usage: count_words.sh filename

只需将文件名作为唯一参数传入脚本即可运行:

$ bash count_words.sh file.txt
   5 apple
   4 banana
   2 orange
   1 pear