• awk_shell三剑客


    ######

    match匹配分组

    [root@paas-controller-3:/home/ubuntu]$ echo commsrvpg-9863eea4-2d71-4be9-aaaa-31fc9385c172-opcs | awk '{match($0,/[a-z0-9]{8,}-[a-z0-9]{4,}-[a-z0-9]{4,}-[a-z0-9]{4,}-[a-z0-9]{12,}/,a)}{print a[0]}'

    9863eea4-2d71-4be9-aaaa-31fc9385c172

    [root@paas-controller-3:/home/ubuntu]$ 

    ######

    gsub_awk替换字符串

    curl -s -X GET http://10.202.12.14:22324/api/v1/extsys/cloud/vim | python -mjson.tool | grep vimid | awk -F ':' '{gsub(" ","");gsub(""","");print $2}'

    gsub函数替换字符串
    gsub("替换前字符串","替换后字符串")

    ######

    NR_FNR_NF_awk命令中系统保留字

    NR表示从awk开始执行后,按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数,NR可以理解为Number of Record的缩写。
    在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR,每当处理一个新文件的时候,FNR就从1开始计数,FNR可以理解为File Number of Record。
    NF表示目前的记录被分割的字段的数目,NF可以理解为Number of Field。

    下面以示例程序来进行说明,首先准备两个输入文件class1和class2,记录了两个班级的成绩信息,内容分别如下所示:
    CodingAnts@ubuntu:~/awk$ cat class1
    zhaoyun 85 87
    guanyu 87 88
    liubei 90 86
    CodingAnts@ubuntu:~/awk$ cat class2
    caocao 92 87 90
    guojia 99 96 92

    CodingAnts@ubuntu:~/awk$ awk '{print FILENAME,"NR="NR,"FNR="FNR,"$"NF"="$NF}' class1 class2
    class1 NR=1 FNR=1 $3=87
    class1 NR=2 FNR=2 $3=88
    class1 NR=3 FNR=3 $3=86
    class2 NR=4 FNR=1 $4=90
    class2 NR=5 FNR=2 $4=92

    除了NR和FNR外,上面的示例中还演示了NF的使用,class1中每行有3个字段,而class2中有4个字段,通过$NF就可以很方便的获取最后一个字段了。

  • 相关阅读:
    算符优先分析
    自下而上语法分析
    递归下降语法分析
    LL(1)文法的判断,递归下降分析程序
    消除左递归
    4.K均值算法--应用
    2.机器学习相关数学基础
    K均值算法
    机器学习概述
    算符优先分析
  • 原文地址:https://www.cnblogs.com/kingcs/p/14586436.html
Copyright © 2020-2023  润新知