zoukankan      html  css  js  c++  java
  • awk命令入门

    什么是awk?

    AWK是一个强大的文本处理工具。可以使用awk读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

    使用awk的基本格式

    awk [options] ‘command’ file(s)
    command 由pattern和action两部分组成
    command 的格式 为 pattern {action}
    1. pattern可以是正则表达式或者关系表达式
    2. action 包含两部分:

    (1). 内置函数
    print printf getline 等
    (2). 控制指令
    if else while
    

    awk options配置选项

    • -F filed-separator(分割符,默认为空格)
      例子:
    #打印所有用户的用户名、UID、GID
    #内置变量$1 $3 $4的使用可以参考下面的awk内置变量的说明及
    awk -F ':' '{printf "USER:%-20s UID:%10i GID:%10i
    ",$1,$3,$4}' /etc/passwd

    awk内置变量

    • $0: 表示当前行
    • $1: 表示每行的第一个字段
    • $2: 表示每行的第二个字段
    • ….
    • *$n: 表示每行的第三个字段
    • NR: 每行的行号
    • NF: 每行的字段数

    例子:

    #在上一个例子的基础上添加行号、文件名、字段数
    awk -F ':' '{printf "LineNUmber:%5i | USER:%-20s | UID:%10i | GID:%10i | FILENAME:%10s|NF:%10i
    ",NR,$1,$3,$4,FILENAME,NF}' /etc/passwd

    awk逻辑判断式

    awk 中的逻辑判断式可以是正则表达式或者关系表达式

    ~,!~:正则表达式

    例子: 打印m开头的用户名

    $awk -F ':' '$1~/^m.*/{print $1}' /etc/passwd

    对正则表达式取反,输出正则表达式匹配行的补集

    $awk -F ':' '$1!~/^m.*/{print $1}' /etc/passwd

    ==,!=,<,>: 逻辑表达式

    例子: 判断UID的大小,输出UID大于100的用户名和UID

    $awk -F ':' '$3>100{print $1,$3}' /etc/passwd

    例子:输出UID不等于100的用户名和UID

    $awk -F ':' '$3 != 100{print $1,$3}' /etc/passwd

    awk BEGIN代码块、END代码块

    BEGIN{command1}pattern{command2}END{command3}
    例子 :在开始添加表头,在结尾添加表尾

    awk -F ':' 'BEGIN{print "LineNum TotalColNum User UID"}{print NR,NF,$1,$3}END{print "-----"FILENAME"---------"}' /etc/passwd

    awk使用实例

    • 统计当前目录文件总和
     ls -l|awk 'BEGIN{size=0}{size+=$5}END{print "size is "size/1024/1024"M"}'
    • 统计用户数
    awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print " count = "count}' /etc/passwd
    • 输出UID大于100的用户名以及在输出的行集合中的行号
    awk -F ':' 'BEGIN{count=0}{if ($3 >100 ) name[count++]=$1}END{ for (i=0;i<count;i++) print i,name[i]}' /etc/passwd
    • 统计每种网络状态的连接的数量
    netstat -anp | awk '$6~/CONNECTED|LISTEN/{sum[$6]++}END{for (i in sum) print i,sum[i]}'
  • 相关阅读:
    树莓派AI视觉云台——8、WiringPi库函数
    树莓派AI视觉云台——7、树莓派系统备份
    树莓派AI视觉云台——7、树莓派系统备份
    树莓派AI视觉云台——6、Linux常用命令及vim编辑器的使用
    树莓派AI视觉云台——6、Linux常用命令及vim编辑器的使用
    树莓派AI视觉云台——5.SSH文件传输
    暑假第一周进度报告
    teamfinal使用体验(15号作品)
    《驱动学习
    《驱动学习
  • 原文地址:https://www.cnblogs.com/infoflow/p/8975275.html
Copyright © 2011-2022 走看看