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

参考技术A

用awk数组来做最简便,因为awk本身就会逐行读入文本并处理。

假设文件名叫file.txt,那么:

awk 'w[$1]+=1ENDfor(a in w) print a"\\t"w[a]' file.txt

awk中的数组元素下标可以是任意字符,这里就将文件的一行内容(用$1取得)作为数组w的元素下标,利用awk的逐行处理特性,相同下标的对其统计次数进行递增累加。

文件遍历完,最后用for循环输出下标及统计次数(制表符分隔)。

参考技术B #!/bin/bash 
filename=$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分送上的主要内容,如果未能解决你的问题,请参考以下文章

shell wc命令 统计行数

Shell脚本统计文件夹中部分文件的行数

spark-shell读取.log文件获取日志信息后,怎么进行分析?比如统计包含404的行数

linux 统计匹配字符串的行数

代码统计工具,要支持差异统计,如:代码修改行数、删除行数、新增行数等

统计Java项目的代码行数