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就可以很方便的获取最后一个字段了。

  • 相关阅读:
    [Python] Python基础字符串
    [android] 手机卫士绑定sim卡
    [Laravel] Laravel的基本数据库操作部分
    [android] 手机卫士手势滑动切换屏幕
    [android] 手机卫士界面切换动画
    [android] 手机卫士设置向导页面
    [javaEE] Servlet的手动配置
    [android] 手机卫士保存密码时进行md5加密
    [android] 手机卫士自定义对话框布局
    [Laravel] Laravel的基本使用
  • 原文地址:https://www.cnblogs.com/kingcs/p/14586436.html
Copyright © 2011-2022 走看看