[02]Linux与Bash教程-07-Linux三剑客之awk

本文详细介绍了Linux下的awk命令,包括其基本语法、上下文变量、pattern和action表达式,以及正则匹配、计算平均值和使用词典结构的示例。awk作为Linux工作者的重要技能,涵盖从单行转多行到复杂数据分析的全过程。
摘要由CSDN通过智能技术生成

01、Linux 三剑客之 awk
    根据定位到的数据行处理其中的分段
02、awk 基本语法
    awk 是 linux 下的一个命令,同时也是一种语言解析引擎
    awk 具备完整的编程特性。比如执行命令,网络请求等
    精通 awk,是一个 linux 工作者的必备技能
    语法 awk 'pattern{action}'
03、awk 上下文变量
    开始 BEGIN 结束 END
    行数 NR
    字段与字段数 $1 $2 .. $NF NF
    整行 $0
    字段分隔符 FS
    输出数据的字段分隔符 OFS
    记录分隔符 RS
    输出字段的行分隔符 ORS
04、字段变量用法
    -F 参数指定字段分隔符,可以用|指定多个- 多分隔符 -F ‘<|>’
    BEGIN{FS=“_”} 也可以表示分隔符
    $0 代表当前的记录
    $1 代表第一个字段
    $N 代表第 N 个字段
    $NF 代表最后一个字段
    $(NF-1) 代表倒数第二个字段
05、pattern 表达式
    正则匹配 $1~/pattern/ /pattern/
    比较表达式 $2>2 $1=="b"
06、awk pattern 匹配表达式案例
    开始和结束 awk 'BEGIN{}END{}'
    正则匹配
    整行匹配 awk '/Running/'
    字段匹配 awk '$2~/xxx/'
    行数表达式
    取第二行 awk 'NR==2'
    去掉第一行 awk 'NR>1'
    区间选择
    awk '/aa/,/bb/'
    awk '/1/,NR==2'
07、action 行为表达式 {action}
    打印 {print $0} {print $2}
    赋值 {$1="abc"}
    处理函数
    原始内容 $0
    更新后内容 {$1=$1;print $0}
08、单行转多行
    echo 1:2:3 | awk 'BEGIN{RS=":"}{print $0}'
    1
    2
    3
09、多行变单行
    echo '1
    2
    3' | awk 'BEGIN{RS="";FS="\n";OFS=":"}{$1=$1;print $0}'
    1:2:3
    echo '1
    2
    3' | awk 'BEGIN{ORS=":"}{$1=$1;print $0}'
    1:2:3:
10、计算平均数
    echo '1,10
    2,20
    3,30' | awk 'BEGIN{total=0;FS=","}{total+=$2}END{print total/NR}'
    20
11、awk 的词典结构 array
    array 是稀疏矩阵,类似 python 的词典类型
    统计多家机构的营业额
    统计多家机构的营业额平均值
    echo 'a, 1, 10
    a, 2, 20
    a, 3, 30
    b, 1, 5
    b, 2, 6
    b, 3, 7' | awk '{data[$1]+=$3}
    END{for(k in data) print k,data[k]}'
    a, 60
    b, 18

    echo 'a, 1, 10
    a, 2, 20
    a, 3, 30
    b, 1, 5
    b, 2, 6
    b, 3, 7' | awk '{data[$1]+=$3;count[$1]+=1;}
    END{for(k in data) print k,data[k]/count[k]}'
    a, 20
    b, 6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值