zoukankan      html  css  js  c++  java
  • awk (一)

    awk的高级部分以前没看,就先从awk开始吧,后面再重看sed

    随机函数 rand ,srand

    [root@x1 ~]# echo a|awk 'BEGIN{srand(PROCINFO["pid"])} {printf "%.0f\n",rand()*11}'
    0
    [root@x1 ~]# echo a|awk 'BEGIN{srand(PROCINFO["pid"])} {printf "%.0f\n",rand()*11}'
    2
    [root@x1 ~]# echo a|awk 'BEGIN{srand(PROCINFO["pid"])} {printf "%.0f\n",rand()*11}'
    4
    [root@x1 ~]# echo a|awk 'BEGIN{srand(PROCINFO["pid"])} {printf "%.0f\n",rand()*11}'
    3
    

    awk版随机数生成

    #!/bin/sh
    awk -v count=$1 -v max=$2 '
    BEGIN {
      printf("this programe will genrate %d nums,between 1 to %d\n",count,max)
      for(i=1;i<=count;i++) {
        do {
            srand()
            randnum=1+int(rand()*max)
            } while (randnum in myarray)
        myarray[randnum]=randnum
         }
    for(x in myarray)
      printf("%d,",myarray[x])
      print
    }'
    

    结果如下

    [root@x1 ~]# ./test 6 30
    this programe will genrate 6 nums,between 1 to 30
    5,29,9,21,25,16,
    
    [root@x1 ~]# ./test 6 30
    this programe will genrate 6 nums,between 1 to 30
    8,12,22,13,3,25,
    
    [root@x1 ~]# ./test 5 40
    this programe will genrate 5 nums,between 1 to 40
    4,10,21,30,33,
    

    字符串函数

    gsub(正则,替换成,要替换的)

    [root@x1 ~]# awk 'BEGIN{str="ilovelinux";re="love";gsub(re,"hate",str);print str}'  
    ihatelinux
    [root@x1 ~]# awk 'BEGIN{str="i love linux";re="love";gsub(re,"hate",str);print str}'  #字符串有空格也可以替换
    i hate linux
    [root@x1 ~]# awk 'BEGIN{str="i love linux i love you";re="love";gsub(re,"hate",str);print str}'   #可以多次替换
    i hate linux i hate you
    [root@x1 ~]# awk 'BEGIN{str="i love linux i love you";re="love";n=gsub(re,"hate",str);print str,n}'  #gsub()返回替换的个数
    i hate linux i hate you 2
    

    index(原串,子串)  返回子串在原串中的位置

    [root@x1 ~]# awk 'BEGIN{str="ilovelinux";print index(str,"love")}'
    2
    

    split(字符串,数组,分隔符)

    [root@x1 ~]# awk 'BEGIN{str="i#love#linux";split(str,array,"#");for(i in array) print array[i]}'
    i
    love
    linux
    

    substr(字符串,起始位置,字符个数)

    [root@x1 ~]# awk 'BEGIN{str="i#love#linux";print substr(str,3,4)}'
    love
    

    单词首字母大写(awk)

    awk '
    BEGIN {
      upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      lower="abcdefghijklmnopqrstuvwxyz"
      }
    {position=index(lower,substr($0,1,1))
      print substr(upper,position,1)substr($0,2)
    }'
    


  • 相关阅读:
    学习ActiveMQ(七):JMS消息的事务管理
    2020杭电多校第三场题解
    2020牛客暑期多校训练营第六场题解
    2020杭电多校第二场题解
    2020 Petrozavodsk Winter Camp, Jagiellonian U Contest 部分题解
    Educational Codeforces Round 86 (Rated for Div. 2) 部分题解
    2020, XIII Samara Regional Intercollegiate Programming Contest 题解
    2019 JUST Programming Contest题解
    2019-2020 ICPC Asia Taipei-Hsinchu Regional Contest 部分题解
    2019 ICPC Universidad Nacional de Colombia Programming Contest 题解
  • 原文地址:https://www.cnblogs.com/txwsqk/p/2044702.html
Copyright © 2011-2022 走看看