linux统计关键字

查找关键字

  • grep

                单个字符串:grep -o Str_1 file_name | wc  -l

                多个字符串:grep -o 'Str_1\|Str_2\|Str_3……' file_name | wc -l    注:必须加引号(单双都可)

  • awk

                awk -v RS="@#$j" '{print gsub(/Str/,"&")}' filename

                awk '{s+=gsub(/targetStr/,"&")}END{print s}' filename

延伸 :通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本

            awk语法 :awk '{pattern + action}' {filenames}

            pattern 表示 AWK 在数据中查找的内容,

             action 是在找到匹配内容时所执行的一系列命令

调用awk的三种方式

1

2

3

4

5

6

7

8

9

10

11

12

13

1.命令行方式

awk [-F  field-separator]  'commands'  input-file(s)

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。

在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

 

2.shell脚本方式

将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。

相当于shell脚本首行的:#!/bin/sh

可以换成:#!/bin/awk

 

3.将所有的awk命令插入一个单独文件,然后调用:

awk -f awk-script-file input-file(s)

其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

 

统计关键字出现的次数

  • perl

                 perl -e 'while(<>)  {$count+= s/关键词//g;}   print "$count"; '   filename

解释: perl -e ‘xxxxx……’ 表示执行单引号中的指令

             filename 表示要处理的对象是filename,也就是我们需要统计的文件

             while(<>):每次读出文件的一行,直到文件结束。读取出来的内容放入默认变量$_中。

             s/A//g:把默认变量($_,就是上面读出来的)中的A字符全部(g)替换为空。这个语句返回的结果是替换成功的次数。

             $count+ = s/A//g:把替换成功的次数记录在$count中。

             Pint $count: 打印总的次数

把以上放在一起就是:每次读取文件中的一行,计算其中字符出现的次数,并累加到变量$count中。最后打印出来。

  • grep&awk

                 grep -o '\(关键字1\|关键字2|关键字3\)' file_name | awk '{a[$0]++} END{for (i in a) {print i"\t"a[i]; }}' | sort -nr -k2

  • awk

                 awk '{for(i=1;i<=NF;++i) if($i=='关键字') ++sum}END{print sum}' file_name

  • 统计多个关键字在某个文本中出现的次数,并按次数排序

                cat filename | awk {print'$n'} | sort -nr | uniq -c | sort -k1 -nr
  注释:  $n 为需要按出现次数排序的那一列
                sort -nr 先排序
                uniq -c 去重并计算出现次数
                sort -k1 -nr 按出现次数排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值