第十三单元 AWK实战应用

awk内建变量        

    NF:字段数量
        NR:文件行数
        FNR:各文件分别统计行数

条件表达式:      

    selector?if-true-expression:if-false-expression
        # awk -F: '{$3>=1000?usertype="Common User":usertype="Sysadmin or SysUser";printf "%15s:%s\n",$1,usertype}' /etc/passwd

模式
        1、/正则表达式/:仅处理能够被此处模式匹配的行
            awk ‘/UUID/{print $1}’ /etc/fstab
        2、比较表达式,条件为真进行打印,为假则不打印
            awk -F '$3>=1000{print $1,$3}' /etc/passwd
        3、行范围
            awk -F: '/^root/,/myuser$/{print $1}' /etc/passwd
        4、BEGIN/END模式
            BEGIN{}:仅在开始处理文件中的文本之前执行一次
            END{}:仅在问吧处理完成之后执行一次
高级语法:
        1、if判断
            # awk -F:‘{if($3>=1000) {printf "Common user: %s\n",$1} else {printf "root of Sysuser: %s\n",$1}}’ /etc/passwd
        2、while循环
            # awk ‘/^[[:space:]]*linux16/{i=1;while(i<=NF) {print $i,length($i);i++}}’ /etc/grub2.cfg
        3、for循环
            # awk ‘/^[[:space:]]*linux16/{for(i=1;i<=NF;i++) {print $i,length($i)}}’ /etc/grub2.cfg

posted @ 2022-11-01 14:11  摩天居士-谢烟客  阅读(21)  评论(0编辑  收藏  举报