shell统计行数,50分送上
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell统计行数,50分送上相关的知识,希望对你有一定的参考价值。
如下,我想统计相同行的行数量
10.202.5.71
10.202.5.71
10.202.5.71
10.202.5.70
10.202.5.68
10.202.5.68
输入结果如
10.202.5.71 3
10.202.5.70 1
10.202.5.68 3
用awk数组来做最简便,因为awk本身就会逐行读入文本并处理。
假设文件名叫file.txt,那么:
awk 'w[$1]+=1ENDfor(a in w) print a"\\t"w[a]' file.txtawk中的数组元素下标可以是任意字符,这里就将文件的一行内容(用$1取得)作为数组w的元素下标,利用awk的逐行处理特性,相同下标的对其统计次数进行递增累加。
文件遍历完,最后用for循环输出下标及统计次数(制表符分隔)。
参考技术B #!/bin/bashfilename=$1
declare -A strmap
while read line
do
if [ -z "$strmap[$line]" ] ;then
strmap[$line]=1
else
let strmap[$line]++
fi
done <$filename
for line in $!strmap[@] ; do
echo "$line $strmap[$line]"
done 参考技术C uniq -c可以计算出现次数,前提是文件已经排序,行数量在第一列.
cat 文件名 | sort | uniq -c本回答被提问者采纳
Linux——比较实用的shell命令
1)统计当前目录下的index.php文件的行数
[[email protected]_web1 ~]# cat index.php |wc -l
17
2)统计web目录下,js文件数量:
[[email protected]_web1 ~]# find web/ -name "*.js" |wc -l
3)统计web目录下所有js文件代码行数:
[[email protected]_web1 ~]# find web/ -name "*.js" |xargs cat|wc -l 或 wc -l `find web/ -name "*.js"`|tail -n1
4)统计web目录下所有js文件代码行数,过滤了空行:
`[[email protected]_web1 ~]# find web/ -name "*.js" |xargs cat|grep -v ^$|wc -l``
5)统计web目录下所有js文件代码行数。过滤注释行[[email protected]_web1 ~]# find web/ -name "*.js" |xargs cat|grep -v -e ^$ -e ^s*//.*$|wc -l
以上是关于shell统计行数,50分送上的主要内容,如果未能解决你的问题,请参考以下文章
spark-shell读取.log文件获取日志信息后,怎么进行分析?比如统计包含404的行数