zoukankan      html  css  js  c++  java
  • awk打印指定列以后的所有内容

    今天在分析tomcat日志文件时,遇到一个问题,想统计外面用户的user agent信息,因此就只需要过滤出第12列之后的所有内容

    那么对于这个需求,我们到底该怎么处理呢,由于我没有想到一个一步到位的方法,因此找到了一个取巧的方法,将其过程分成两步:

    1、使用awk将文件的前12列替换为空。

    awk '{for(i=1;i<=12;i++)$i="";print $0}' localhost_access_log.2015-01-03.txt              //写法一
    awk '{for(i=1;i<=12;i++){$i=""};print $0}' localhost_access_log.2015-01-03.txt            //写法二
    awk '{for(i=13;i<=NF;i++)printf $i" ";printf "
    "}' localhost_access_log.2015-01-03.txt   //写法三

    执行完以上脚本后,每一行的前面都将有12个空格字符,如下图所示:

    2、第二步我们就只需要处理每行前面的12个空格即可,假设我们已经将上面的结果重定向到了5201351.txt文件,这时我们再使用sed命令。

    [root@5201351 ~]# sed 's/^ *//' 5201351.txt             //这样只能匹配空格开头    
    [root@5201351 ~]# sed 's/^s*//' 5201351.txt            //也可以这样写,除了空格还可以匹配制表符
    [root@5201351 ~]# sed 's/^[[:space:]]*//' 5201351.txt   //也可以这样写,除了空格还可以匹配制表符

    这样我们就完美的解决了我们的需求,只过滤出日志文件第12列以后所有的内容。

    总结:在工作中很多时候也是这样、一个问题如果卡久了,我们也可以将问题化成2步、甚至3步完成。

  • 相关阅读:
    poj3294 Life Forms(后缀数组)
    1628. White Streaks(STL)
    1523. K-inversions(K逆序对)
    1890. Money out of Thin Air(线段树 dfs转换区间)
    1350. Canteen(map)
    1521. War Games 2(线段树解约瑟夫)
    1003. Parity(并查集)
    1470. UFOs(三维树状数组)
    1471. Tree(LCA)
    1494. Monobilliards(栈)
  • 原文地址:https://www.cnblogs.com/5201351/p/4202570.html
Copyright © 2011-2022 走看看