zoukankan      html  css  js  c++  java
  • awk

    awk命令的常用功能:
    (1)指定分隔显示某几列。
    例子: awk -F "GET|HTTP" '{print $2}' a.log 直接取出显示出日志文件的url之列。
    
    (2)通过正则表达式取出想要的内容。
    例子:awk '$6~/Failed/{print $11}' /var/log/secure 分析生产环境中的日志找出谁在破解用户的密码。
    
    (3)显示出某个范围内的内容。
    例子:awk 'NR==20,NR==30' filename 显示文件的20到30行。
    
    (4)通过awk进行统计计算。
    例子:awk '{sum+=$0} END {print sum}' ett.log 计算总和。
    
    (5)awk数组计算与去重。
    例子:awk '{array[$1]++} END {for(key in array) print key,array [key]}' a.log  对日志进行统计与计数。
     
    参数选项:
    -F  指定字段分隔符。
    -v  定义或修改一个awk内容的变量。
     
    
    显示文件的第5行
    [root@testdb ~]# cat -n a.log
         1    root:x:0:0:root:/root:/bin/bash
         2    bin:x:1:1:bin:/bin:/sbin/nologin
         3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4    adm:x:3:4:adm:/var/adm:/sbin/nologin
         5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6    sync:x:5:0:sync:/sbin:/bin/sync
         7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8    halt:x:7:0:halt:/sbin:/sbin/halt
         9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        10    operator:x:11:0:operator:/root:/sbin/nologin
        11    games:x:12:100:games:/usr/games:/sbin/nologin
        12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        13    nobody:x:99:99:Nobody:/:/sbin/nologin
    [root@testdb ~]# awk 'NR==5' a.log 
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    
    
    显示文件的第2-6行
    [root@testdb ~]# cat -n a.log
         1    root:x:0:0:root:/root:/bin/bash
         2    bin:x:1:1:bin:/bin:/sbin/nologin
         3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4    adm:x:3:4:adm:/var/adm:/sbin/nologin
         5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6    sync:x:5:0:sync:/sbin:/bin/sync
         7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8    halt:x:7:0:halt:/sbin:/sbin/halt
         9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        10    operator:x:11:0:operator:/root:/sbin/nologin
        11    games:x:12:100:games:/usr/games:/sbin/nologin
        12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        13    nobody:x:99:99:Nobody:/:/sbin/nologin
    [root@testdb ~]# 
    [root@testdb ~]# awk 'NR==2,NR==6' a.log
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
     
     
    给文件每行的内容之前加上行号,显示与 cat -n a.log 同样的功能。
    [root@testdb ~]# cat -n a.log
         1    root:x:0:0:root:/root:/bin/bash
         2    bin:x:1:1:bin:/bin:/sbin/nologin
         3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4    adm:x:3:4:adm:/var/adm:/sbin/nologin
         5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6    sync:x:5:0:sync:/sbin:/bin/sync
         7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8    halt:x:7:0:halt:/sbin:/sbin/halt
         9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        10    operator:x:11:0:operator:/root:/sbin/nologin
        11    games:x:12:100:games:/usr/games:/sbin/nologin
        12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        13    nobody:x:99:99:Nobody:/:/sbin/nologin
    [root@testdb ~]# 
    [root@testdb ~]# awk '{print NR,$o}' a.log
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4 adm:x:3:4:adm:/var/adm:/sbin/nologin
    5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    6 sync:x:5:0:sync:/sbin:/bin/sync
    7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    8 halt:x:7:0:halt:/sbin:/sbin/halt
    9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10 operator:x:11:0:operator:/root:/sbin/nologin
    11 games:x:12:100:games:/usr/games:/sbin/nologin
    12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13 nobody:x:99:99:Nobody:/:/sbin/nologin
    
    
    显示文件的第2行到第6行并打印行号
    [root@testdb ~]# cat -n a.log
         1    root:x:0:0:root:/root:/bin/bash
         2    bin:x:1:1:bin:/bin:/sbin/nologin
         3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4    adm:x:3:4:adm:/var/adm:/sbin/nologin
         5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6    sync:x:5:0:sync:/sbin:/bin/sync
         7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8    halt:x:7:0:halt:/sbin:/sbin/halt
         9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        10    operator:x:11:0:operator:/root:/sbin/nologin
        11    games:x:12:100:games:/usr/games:/sbin/nologin
        12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        13    nobody:x:99:99:Nobody:/:/sbin/nologin
    [root@testdb ~]# awk 'NR==2,NR==6 {print NR,$0}' a.log 
    2 bin:x:1:1:bin:/bin:/sbin/nologin
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4 adm:x:3:4:adm:/var/adm:/sbin/nologin
    5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    6 sync:x:5:0:sync:/sbin:/bin/sync
    
    
    显示文件的第1列,第3列和最后一列
    [root@testdb ~]# cat -n a.log
         1    root:x:0:0:root:/root:/bin/bash
         2    bin:x:1:1:bin:/bin:/sbin/nologin
         3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4    adm:x:3:4:adm:/var/adm:/sbin/nologin
         5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
         6    sync:x:5:0:sync:/sbin:/bin/sync
         7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
         8    halt:x:7:0:halt:/sbin:/sbin/halt
         9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
        10    operator:x:11:0:operator:/root:/sbin/nologin
        11    games:x:12:100:games:/usr/games:/sbin/nologin
        12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        13    nobody:x:99:99:Nobody:/:/sbin/nologin
    [root@testdb ~]# awk -F ":" '{print $1,$3,$NF}' a.log
    root 0 /bin/bash
    bin 1 /sbin/nologin
    daemon 2 /sbin/nologin
    adm 3 /sbin/nologin
    lp 4 /sbin/nologin
    sync 5 /bin/sync
    shutdown 6 /sbin/shutdown
    halt 7 /sbin/halt
    mail 8 /sbin/nologin
    operator 11 /sbin/nologin
    games 12 /sbin/nologin
    ftp 14 /sbin/nologin
    nobody 99 /sbin/nologin
     
    
    把文件中的 /sbin/nologin 替换为  /bin/bash
    [root@testdb ~]# cat a.log
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    [root@testdb ~]#
    [root@testdb ~]# awk '{gsub("/sbin/nologin","/bin/bash",$0);print $0}' a.log 
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/bin/bash
    daemon:x:2:2:daemon:/sbin:/bin/bash
    adm:x:3:4:adm:/var/adm:/bin/bash
    lp:x:4:7:lp:/var/spool/lpd:/bin/bash
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/bin/bash
    operator:x:11:0:operator:/root:/bin/bash
    games:x:12:100:games:/usr/games:/bin/bash
    ftp:x:14:50:FTP User:/var/ftp:/bin/bash
    nobody:x:99:99:Nobody:/:/bin/bash




  • 相关阅读:
    POJ 2031 Building a Space Station 最小生成树模板
    POJ 2492 A Bug's Life 并查集
    HDU 2255 奔小康赚大钱 KM算法的简单解释
    HDU 2802 F(N) 数论+打表
    HDU 5455 Fang Fang 水题,但题意描述有问题
    LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理
    LightOJ 1370 Bi-shoe and Phi-shoe 数论
    HDU 5652 India and China Origins 二分优化+BFS剪枝
    bzoj2287【POJ Challenge】消失之物(退背包)
    bzoj3297[USACO2011 Open]forgot(dp + string)
  • 原文地址:https://www.cnblogs.com/l10n/p/9416628.html
Copyright © 2011-2022 走看看