zoukankan      html  css  js  c++  java
  • 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就可以很方便的获取最后一个字段了。

  • 相关阅读:
    ArcObjects
    Dojo是什么?
    百度地图是什么坐标系?
    高德地图API
    地理POI数据爬取-以百度地图为例
    Microsoft Help Viewer&ArcGIS Server二次开发.net篇 (一) 安装
    DevOps:Docker VS Kubernetes
    JUnit测试环境搭建
    嵌入式tomcat
    如何使用ABAP发送带有PDF格式附件的电子邮件
  • 原文地址:https://www.cnblogs.com/kingcs/p/14586436.html
Copyright © 2011-2022 走看看