查找关键字
- 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 |
|
统计关键字出现的次数
- 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 按出现次数排序