shell题解 | 统计每个单词出现的个数

统计每个单词出现的个数

https://www.nowcoder.com/practice/ad921ccc0ba041ea93e9fb40bb0f2786

#!/bin/bash

awk '
    { 
        for(i = 1; i <= NF; i++) {
            arr[$i]++
        } 
    } 
    END{ 
        for(i in arr) {
            print i, arr[i]
        } 
    }
' nowcoder.txt | sort -k2,2n -k1,1

# NF  当前行的字段数量,默认分隔符是空白字符(空格,制表符(Tab), 多个连续的空白字符(被视为一个分隔符))
# END语句只执行一次
# sort -k2,2n -k1,1
# -k  指定排序的关键字
# 2,2 排序的起始字段 和 结束字段; 起始第2列,结束第2列
# n   按数字进行排序
# 先按 -k2,2n 排序,再按 -k1,1 排序

自测输入

welcome nowcoder
welcome to nowcoder
nowcoder

文件里有3行内容,awk每次处理一行

第一次总循环

$i 为 welcome
arr["welcome"]    即 arr["welcome"] = 0
arr["welcome"]++  即 arr["welcome"] = 1

$i 为 nowcoder
arr["nowcoder"]    即 arr["nowcoder"] = 0
arr["nowcoder"]++  即 arr["nowcoder"] = 1

第二次总循环

$i 为 welcome
arr["welcome"]++  即 arr["welcome"] = 2

$i 为 to
arr["to"]    即 arr["to"] = 0
arr["to"]++  即 arr["to"] = 1

$i 为 nowcoder
arr["nowcoder"]++  即 arr["nowcoder"] = 2

第三次总循环

$i 为 nowcoder
arr["nowcoder"]++  即 arr["nowcoder"] = 3

执行END语句

welcome 2
nowcoder 3
to 1

sort排序

to 1
welcome 2
nowcoder 3

END

全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务