【shell】关于shell下的awk NF sort的运用,例题:一行代码统计文件内重复字段数

  • awk

一种语言、工具。主要用于对linux / unix 下的数据、文本的处理。

  1. awk [options] 'script' var=value file(s) 
  2. awk [options] -f scriptfile var=value file(s)

常用:awk 'BEGIN{ commands } pattern{ commands } END{ commands }' file 

 

  • NF

awk的内置命令,表示字段数,在执行过程中对应于当前的字段数。print $NF答应一行中最后一个字段。

如,testFile:

a b c

d e

f g h i

awk '{for(i=1;i<=NF;++i)} print i, $i' testFile

结果会循环3趟,每一趟循环次数为当前行里空格分隔的字符/字符串个数;

扩:NR,行数。

 

  • sort

-n 根据字符串数值比较大小

-r 降序

-k 参照值位置

 

例题:

写一个 bash 脚本以统计一个文本文件 test.txt 中每个单词出现的频率,并按照频率降序排列,一行代码实现。

awk '{for(i=1;i<=NF;i++){sum[$i]++}}END{for(k in sum){print k " " sum[k]}' test.txt | sort -nr -k2

注:此处sum[]可以理解为二维数组或map,sum 和 $i是指具体的字符串,sum[$i]是指该字符串的次数;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值