• linux awk


    引用:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

    awk [-F ':' ]  '{print $1}'  filename
    cat filename | awk [-F ':' ]  '{print $1}'
    
    [root@local yang]# tail /etc/passwd |awk -F ':' 'BRGIN {print "name,shell"} {print $1"---"$7} END {print "nameEND,shellEND"}'
    ntp---/sbin/nologin
    apache---/sbin/nologin
    saslauth---/sbin/nologin
    postfix---/sbin/nologin
    pulse---/sbin/nologin
    nameEND,shellEND
    

    搜索并打印所在行

    [root@local yang]# awk -F: '/root/' /etc/passwd #红色部分为正则
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    

    $0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推

    搜索并打印所在行(过滤输出)

    [root@local yang]# awk -F: '/root/{print $1}' /etc/passwd
    root
    operator
    ``
    
    

    ARGC 命令行参数个数
    ARGV 命令行参数排列
    ENVIRON 支持队列中系统环境变量的使用
    FILENAME awk浏览的文件名(输入是文件的时候才会有文件名 如果是搜索别的命令的输出 则不会有文件名)
    FNR 浏览文件的记录数
    FS 设置输入域分隔符,等价于命令行 -F选项
    NF 浏览记录的域的个数(列)
    NR 已读的记录数(行)
    OFS 输出域分隔符
    ORS 输出记录分隔符
    RS 控制记录分隔符

    
    变量输出示例
    

    [root@local yang]# awk -F: '{print "filename:"FILENAME " no:"NR " cols:"NF}' /etc/passwd
    filename:/etc/passwd no:1 cols:7
    filename:/etc/passwd no:2 cols:7
    ......

    使用printf
    

    [root@local yang]# awk -F: '{printf("filename:%s no:%s cols:%s %s ",FILENAME,NR,NF,$0)}' /etc/passwd
    filename:/etc/passwd no:1 cols:7 root❌0:0:root:/root:/bin/bash
    filename:/etc/passwd no:2 cols:7 bin❌1:1:bin:/bin:/sbin/nologin
    filename:/etc/passwd no:3 cols:7 daemon❌2:2:daemon:/sbin:/sbin/nologin
    filename:/etc/passwd no:4 cols:7 adm❌3:4:adm:/var/adm:/sbin/nologin
    filename:/etc/passwd no:5 cols:7 lp❌4:7:lp:/var/spool/lpd:/sbin/nologin
    filename:/etc/passwd no:6 cols:7 sync❌5:0:sync:/sbin:/bin/sync
    filename:/etc/passwd no:7 cols:7 shutdown❌6:0:shutdown:/sbin:/sbin/shutdown
    ......

    
    awk编程
    
    变量示例
    

    [root@local yang]# awk -F: '{cnt++;print cnt,$1}END{print"cnt:"cnt}' /etc/passwd
    1 root
    2 bin
    3 daemon
    7 shutdown
    ......
    ......
    35 www
    36 mysql
    cnt:36

    统计文件夹下文件占用字节数(不含子文件夹)
    

    [root@local yang]# ll| awk 'BEGIN {size=0}{size=size+$5}END{print"total size:"size}'
    total size:126062

    
    以M计算
    

    [root@local yang]# ll| awk 'BEGIN {size=0}{size=size+$5}END{print"total size:"size/1024/1024"M"}'
    total size:126062

    循环
    

    [root@local node_modules]# awk -F ':' 'BEGIN {count=1;} {name[count] = $1;count++;}; END{for (i = 1; i < NR+1; i++) print i, name[i]}' /etc/passwd
    1 root
    2 bin
    ......

    awk分割大文件并
    

    awk 'NR%12==1{close(p".txt");++p}{print > p".txt"}' filename

  • 相关阅读:
    线程中断总结
    线程的基本协作和生产者消费者
    synchronized总结
    线程基础总结
    Java集合总结(三):堆与优先级队列
    Java集合总结(二):Map和Set
    Java集合总结(一):列表和队列
    java枚举类型总结
    java 内部类简单总结
    java Integer包装类装箱的一个细节
  • 原文地址:https://www.cnblogs.com/ningmo/p/5921781.html
Copyright © 2020-2023  润新知