美文网首页啦啦啦啦啦!收藏
shell脚本五种方法完成文本统计

shell脚本五种方法完成文本统计

作者: 刘小白DOER | 来源:发表于2021-11-23 21:05 被阅读0次

        今天遇到一个需求,就是用统计文本文件中某一列的的数值和。想起以前看到一个脚本里面使用for和cat结合读取文本文件中,for hostname in  `cat /home/harry/hostid`,于是结合网络资料,尝试修改后来计算特定行的综合。

        文本文件如下,首行有注释说明信息。

    1、使用三剑客之一的awk来统计,第一行是没有注释行的和计算,第二行是抛弃注释行的和计算。

    2、和以前的脚本一样,使用for line in $(cat test.txt | grep -v ^#) ,管道符来选择抛弃#开头的那一行。间隔符号是空格、tab或者换行,那么读取一行的话就需要单独设置IFS为换行符,然后再循环中使用cut找到第二行的数值,相加。

    3、上面的脚本会有一个很大的问题,如果文件很大,那么一次性读取整个文件会消耗大量的内存资源。当然,如果是大文件,那么python(numpy或者panda)可能会更加高效快捷。如果一定要使用shell读取的话,文件输入重定向会十分有用。

        [[ $line =~ ^#.* ]] 正则表达式判断是否以#开头,如果不是的话则执行后面的加法操作。

    4、文件输入重定向还有下面这样的写法,和上面的脚本一样,知识格式不一样。

    5、根据上面的再次修改,直接在read中指定某一列,“while read col1 col2 col3 col4 col5” ,然后根据那一列来直接相加即可 ,但是再定义时列数不能小于文件中的列数。正则表达式判断是否以#开头和上面的一致。

    相关文章

      网友评论

        本文标题:shell脚本五种方法完成文本统计

        本文链接:https://www.haomeiwen.com/subject/cxiwtrtx.html