首页 > 试题广场 >

统计每个单词出现的个数

[编程题]统计每个单词出现的个数
  • 热度指数:39169 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
写一个bash脚本以统计一个文本文件nowcoder.txt 中每个单词出现的个数。

为了简单起见,你可以假设:
nowcoder.txt只包括小写字母和空格,每个单词只由小写字母组成,单词间由一个或多个空格字符分隔。

示例:
假设 nowcoder.txt 内容如下:
welcome nowcoder
welcome to nowcoder
nowcoder
你的脚本应当输出(以词频升序排列):
to 1 
welcome 2 
nowcoder 3 

说明:
不要担心个数相同的单词的排序问题,每个单词出现的个数都是唯一的。
示例1

输入

welcome nowcoder
welcome to nowcoder
nowcoder

输出

to 1 
welcome 2 
nowcoder 3 
sed  's/ /\n/g' nowcoder.txt |  sort | uniq -c |sort|awk '{print $2 $1}'

发表于 2024-11-14 17:17:50 回复(0)
#shell统计一个文本文件nowcoder.txt 中每个单词出现的个数,先输出单词,再输出个数,按照个数升序排序,
# 使用tr命令将空格替换为换行符
# 使用sort命令排序并统计重复行
# 使用uniq命令去重并统计重复行
# 使用awk命令调整输出格式,先输出单词,再输出个数
# 使用sort命令按照个数升序排序
tr -s ' ' '\n' < nowcoder.txt | sort | uniq -c | awk '{print $2" "$1}' | sort -k2n
发表于 2023-04-06 10:55:07 回复(0)
awk '{for(i=1;i<=NF;++i){a[$i]++}} END{for(i in a){print i" "a[i]}}' nowcoder.txt
发表于 2022-08-27 17:42:21 回复(0)
sed 's \s \n g' input.txt  | sort | uniq -c | sort | awk '{print $2" "$1}'
发表于 2022-07-31 16:10:04 回复(0)
#!/bin/bash
declare -A words
for i in $(cat nowcoder.txt)
do
        if [ -z  ${words[$i]} ]
        then
                words[$i]=1
        else
                let words[$i]++
        fi
done
res=()
declare -i index=0
for i in "${!words[@]}"
do
       res[$index]="$i ${words[$i]}"
        let index++
done
#排序
for((a=0;a<${#res[@]};a++))
do
        for((j=0;j<${#res[@]};j++))
        do
                var1=$(echo ${res[$a]} | cut -f 2       -d " ")

                var2=$(echo ${res[$j]} | cut -f 2       -d " ")

        if [ $var1 -lt $var2 ]
        then
                         temp=${res[$a]}
                         res[$a]=${res[$j]}
                         res[$j]=$temp
        fi
        done
done
for x in "${res[@]}"
do
        echo -e $x
done

发表于 2022-06-29 14:22:41 回复(0)
awk '{for(i=1;i<=NF;i++)print$i}' nowcoder.txt | sort | uniq -c | sort | awk '{print$2,$1}' 

发表于 2022-06-13 20:26:22 回复(0)
awk '{for(i=1;i<=NF;i++) arr[$i]++;} END{for(s in arr) print s,arr[s];}' nowcoder.txt | sort -n -t ' ' -k 2

发表于 2022-05-28 18:13:18 回复(0)
awk '{for(i=1;i<=NF;i++){Array[$i]++}}END{for(j in Array)print j,Array[j]}' nowcoder.txt


发表于 2022-05-18 16:19:17 回复(0)
cat nowcoder.txt | xargs -n 1| sort | uniq -c | sort -n -k 1 | awk '{print $2,$1}'
发表于 2022-04-21 22:01:47 回复(0)
tr ' ' '\n' < nowcoder.txt |sort|uniq -c|sort -n|awk '{print $2,$1}'
发表于 2022-04-11 11:43:44 回复(0)
 #! /bin/bash
 #1
 #sort升序
 #uniq -c去重,并统计出现的次数
 #sort -n : number 按照数字进行排序,默认数字会被当作字符串进行比较,会出现一下情况
 #sort -r反序,sort是升序
awk '{for(i=1;i<=NF;i=i+1){print $i}}' | sort | uniq -c | sort -n | awk '{print ($2,$1)}'
#2用数组来统计
awk '{
for(i=1;i<=NF;i=i+1)
    a[$i]++
}END{
    for(i in a)
    printf("%s %d",i,a[i])
}' | sort -nk 2
发表于 2022-04-09 20:43:32 回复(0)
#!/usr/bin/env bash
awk '{for(i=1;i<=NF;i++){a[$i]+=1}}END{for(j in a) print j,a[j]}' nowcoder.txt 

发表于 2022-03-25 10:31:41 回复(0)
cat nowcoder.txt | xargs -n1 | sort |uniq -c|sort -k 1  | awk '{print $2,$1}'
每一个单词需要分解
sort 排序,默认升序,也可以 -k指定是哪一列进行排序
uniq -c 统计
发表于 2022-03-17 16:19:10 回复(0)
from collections import Counter
发表于 2022-03-01 08:55:33 回复(1)
cat nowcoder.txt | tr ' ' '\n'| awk '{str[$(NF)]++}END{for(i in str){print i,str[i]}}'
发表于 2021-11-30 02:36:42 回复(0)
cat nowcoder.txt | xargs -n1 | sort | uniq -c | sort | awk '{print $2,$1}'
发表于 2021-10-11 17:27:03 回复(0)
cat nowcoder.txt | sed 's/ /\n/g' | awk '{word[$1]++}END{for(i in word) print i,word[i];}'

发表于 2021-09-16 18:22:06 回复(0)