zoukankan      html  css  js  c++  java
  • awk数组

    对于awk '!a[$3]++',需要了解3个知识点

    1、awk数组知识,不说了
    2、awk的基本命令格式 awk 'pattern{action}' 省略action时,默认action是{print},如awk '1'就是awk '1{print}'
    3、var++的形式:先读取var变量值,再对var值+1

    通过awk去除重复行
    以数据
    1 2 3
    1 2 3
    1 2 4
    1 2 5
    为例,对于awk '!a[$3]++'
    在awk中,对于未初始化的数组变量,在进行数值运算的时候,会赋予初值0,因此a[$3]=0,++运算符的特性是先取值,后加1
    awk处理第一行时: 先读取a[$3]值再自增,a[$3]即a[3]值为空(0),即为awk '!0',即为awk '1',即为awk '1{print}'
    awk处理第二行时: 先读取a[$3]值再自增,a[$3]即a[3]值为1,即为awk '!1',即为awk '0',即为awk '0{print}'
    .............
    最后实现的效果就是对于$3是第一次出现的行进行打印,也就是去除$3重复的行



    a[$NF]+=$6是什么意思呢?
    相当于a[$NF]=a[$NF]+$6
    当a[$NF]从未出现时,a[$NF]=0,即a[$NF]=0+$6,即a[$NF]=$6
    当a[$NF]出现过时,a[$NF]将被覆盖

    [root@localhost scripts]# cat test.txt
    0 1
    1 0
    2 3a
    3 0
    2 3b
    [root@localhost scripts]# awk 'a[$1]+=$2{print $0}' test.txt
    0 1
    2 3a
    2 3b

  • 相关阅读:
    alpha冲刺—Day8
    alpha冲刺—Day7
    alpha冲刺—冲刺计划&代码规范
    Linux安装jdk
    chrome插件开发-notification API注意事项
    VSCode远程连接Docker
    Idea发布项目到Docker
    开发环境配置
    Java设计模式之《单例模式》及应用场景
    使用Docker安装jenkins
  • 原文地址:https://www.cnblogs.com/xiami-xm/p/7448196.html
Copyright © 2011-2022 走看看