Linux统计多个文本文件中关键字出现的次数
Linux下需要统计当前文件夹内每一个文本文件里关键字出现的次数,注意不是统计所有的总次数,是要统计并返回每一个文档里的关键字出现次数
解决方法1
find . -name "文件名" | xargs grep -c "关键字" | awk -F ":" '($2>0) {print $0}' | sort -t ":" -k 2,2nr
筛选当前目录下文件 | 统计文件中"关键字"的个数 | 过滤掉"关键字"个数为0的情况 | 根据:分割域,按照第二个的 按照"number"类型的个数排序(升序)
统计/test/路径下,每个文件中aass关键字出现的次数
[root@sss test]# find . -name "*" | xargs grep -c "aass" | awk -F ":" '($2>0) {print $0}' | sort -t ":" -k 2,2nr
./ex.log:8
./aas5:4
./aas2:3
./new.sh:2
./aas:1
./aas3:1
./aas4:1
./aas6:1
解决方法2
统计/test/路径下,每个文件中aass关键字出现的次数
脚本统计:vim new.sh 加入以下
#!bin/sh
for file in /test/* ;
do
if test -f $file
then
e=`grep aass "$file"|wc -l`
echo "aass--"$file"--"$e
#echo $file 是文件 >> c.log
else
echo $file 是目录
fi
done
添加执行权限:chmod +x new.sh
执行脚本:sh new.sh
[root@sss test]# sh new.sh
aass--/test/aas--1
aass--/test/aas2--3
aass--/test/aas3--1
aass--/test/aas4--1
aass--/test/aas5--4
aass--/test/aas6--1
aass--/test/ex.log--8
aass--/test/ne--0
aass--/test/new.sh--2
[root@sss test]#