天天看点

awk高级应用

  1. IF条件判断

    语法一

        if (表达式)

          动作1

        else

          动作2

    语法二

        if (表达式) 动作1;else 动作2

    #判断boot分区可用容量小于20MB时报警,否则显示OK

    df |grep 'boot' |awk '{if($4<20000) print "Alart";else print "OK"}'

  2. while循环

       while (条件)

       动作

    例子:

    x=1

    while (i<10){

        print $1

    }

    awk 'i=1{} BEGIN { while(i<=10) {++i;print i} }' test.txt

    do

    动作

    while(条件)

    awk 'BEGIN { do {++x;print x} while (x<=10) }' test.txt

  3. for循环

    for (变量; 条件;计数器)

      动作

    awk 'BEGIN {for(i=1;i<=10;i++) print i}' test.txt

    awk 'BEGIN {for(i=10;i>=1;i--) print i}' test.txt

  4. Break与continue

    break    跳出循环

    continue 终止当前循环

    for (i=1;i<=10;i++) {

        if (i=5)

        continue

        print i

        break

  5. 函数

    5.1 rand()函数

     awk 'BEGIN{print rand();print srand();print srand()}' test.txt

    5.2 gsub(x,y,z)函数

     作用在字符串z中使用字符串y替换与正则表达式x相匹配所有字串,z默认为$0

      awk -F: 'gsub(/root/,"ccc",$0) {print $0}' /etc/passwd

      ccc:x:0:0:ccc:/ccc:/bin/bash

    5.3 sub(x,y,z)函数

     作用在字符串z中使用字符串y替换与正则表达式x相匹配的第一个字串,z默认为$0

      awk -F: 'sub(/ccc/,"root",$0) {print $0}' /etc/passwd

    5.4 length(z)函数

    作用:显示test.txt文档中每行的字符长度:

     awk '{print length()}' /usr/local/src/allen/test.txt

    5.5 getline()函数

      df -h | awk '{if(NF==1) {getline;print $3};if(NF==6) print $4}'