zoukankan      html  css  js  c++  java
  • 读取文件,文件内容包含空格Tab和回车提取想要的数据

     

    读取文件,文件内容包含空格Tab和回车提取想要的数据

    今天写了shell脚本,主要目的是将uniq过滤的数据,在次过滤下,原数据中是些ip的访问记录,一行一个ip,想将访问的ip重复的过滤,使用了sort|uniq -c,过滤了重复的数据,并将每个ip的访问次数写在前面,显示的格式是如下:

      4  192.168.1.3

      1  102.173.2.1

      3  123.71.43.6

    得到这个结果后,想将次数小于2次的数据提取出来,开始觉得很简单,直接一个for in $(cat ip.txt)循环,在取第一个值,进行判断,<2的将ip提出来追加到另外一个文件中,结果文件中保存的都是次数,不是ip,查了下资料,发现如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值,解决方法:可以通过把IFS设置为换行符来达到逐行读取的功能.

    OLDIFS=$IFS

    IFS=$' '

    for i in $(cat ip.txt)

    ...

    IFS=$OLDIFS

    但是因为文件太大分析的速度太慢了,使用awk来过滤发现速度比读取每行过滤效率提高的多,方法:使用cat $1 |awk '{if($1<'$2'){printf $2} printf " " }'过滤符合条件的文件,结果在去掉空行。

    这种方法不用for循环,不用设置IFS,而且执行效率比for强的很多,awk很牛!!!

    故吾自今始勉,朝闻道,夕可死。
  • 相关阅读:
    为什么我要学习qt quick
    geometory Intersect
    删除kubernetes节点的正确姿势
    乞丐版docker私有仓库搭建
    kubernetes集群中由于某些原因导致etcd节点没有删干净,需要手动清理etcd节点
    k8s coredns设置上游name server
    虚拟机架设koolshare软路由
    文件类型特征码
    深入字节码 -- 计算方法执行时间
    启迪思维:二叉树
  • 原文地址:https://www.cnblogs.com/nl-1979/p/6203982.html
Copyright © 2011-2022 走看看