• Awk基本入门[4] Awk Conditional Statements and Loops


    1、Simple If Statement


    语法:

    if (conditional-expression)
    action

    如果是多个action,则语法如下:

    if (conditional-expression)
    {
    action1;
    action2;
    }

    Print all the items with quantity <=5:

    $ awk -F "," '{ if ($5 <= 5) 
    print "Only",$5,"qty of",$2, "is available"; }' 
    items.txt
    Only 2 qty of Refrigerator is available
    Only 5 qty of Laser Printer is available

    2、If Else Statement


    语法:

    if (conditional-expression)
        action1
    else
        action2

    该语法与三元运算符类似:

    conditional-expression ? action1 : action2 ;

    The following example displays the message "Buy More" when the total quantity is <= 5, and prints "Sell More" when the total quantity is not <=5.

    $ cat if-else.awk
    BEGIN {
    FS=",";
    }
    {
    if ( $5 <= 5 )
    print "Buy More: Order", $2, "immediately!"
    else
    print "Sell More: Give discount on", $2,"immediately!"
    }
    $ awk -f if-else.awk items.txt
    Sell More: Give discount on HD Camcorder immediately!
    Buy More: Order Refrigerator immediately!
    Sell More: Give discount on MP3 Player immediately!
    Sell More: Give discount on Tennis Racket immediately!
    Buy More: Order Laser Printer immediately!

    3、While Loop


    语法:

    while(condition)
        actions

    示例:打印50个字符“x”

    $ awk 'BEGIN 
    { while (count++<50) string=string "x"; print string }'
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    4、Do-While Loop


    语法:

    do
        action
    while(condition)

    The following awk program prints the total number of quantities sold from the items-sold.txt file for each item. The output of this program is exactly the same as the while.awk program, but this uses do-while.

    $ cat dowhile.awk
    {
    i=2; total=0;
    do
    {
    total = total + $i;
    i++;
    } while (i <= NF)
    print "Item", $1, ":", total, "quantities sold";
    }
    $ awk -f dowhile.awk items-sold.txt
    Item 101 : 47 quantities sold
    Item 102 : 10 quantities sold
    Item 103 : 65 quantities sold
    Item 104 : 20 quantities sold
    Item 105 : 42 quantities sold

    5、For Loop Statement


    语法:

    for(initialization;condition;increment/decrement)
        actions

    The following example prints the sum of fields in a line. Initially the variable i is initialized to 1; if i is less than or equal to the total number of fields, the  urrent field is added to the total; I is incremented and the test is repeated.

    $ echo "1 2 3 4" | awk 
    '{ for (i = 1; i <= NF; i++) total = total+$i }; 
    END { print total }'
    10

    6、Break Statement


    The break statement is used for jumping out of the innermost loop (while, do-while, or for loop) that encloses it. Please note that the break statement has meaning only if you use it with in the loop.

    The following example prints any item number that has a month with no sold items, i.e. that has 0 for any one of the values field2 through field7.

    $ cat break.awk
    {
      i=2; total=0;
      while (i++ <= NF)
        if ($i == 0) {
          print "Item", $1, "had a month with no item sold"
          break;
        }
    }
    $ awk -f break.awk items-sold.txt
    Item 102 had a month with no item sold
    Item 104 had a month with no item sold

    7、Continue Statement


    The continue statement skips over the rest of the loop body causing the next cycle around the loop to begin immediately. Please note that the continue statement has meaning only if you use it with in the loop.

    The following awk script prints the value of x at each iteration except the 5th, where a continue statement skips the printing.

    $ awk 'BEGIN{
        x=1;
        while(x<=10)
        {
          if(x==5){
            x++;
            continue;
          }
        print "Value of x",x;x++;
        }
    }'

    The above command produces the following output.

    Value of x 1
    Value of x 2
    Value of x 3
    Value of x 4
    Value of x 6
    Value of x 7
    Value of x 8
    Value of x 9
    Value of x 10

    8、Exit Statement


    The exit statement causes the script to immediately stop executing the current commands, and also ignores the remaining lines from the input file.

    The following example prints the first item number that has a month when no items were sold. This is similar to the break.awk example, except that it exits  when it finds a month with no sales for an item, rather than going on to look at the other items.

    $ cat exit.awk
    {
      i=2; total=0;
      while (i++ <= NF)
        if ($i == 0) {
          print "Item", $1, "had a month with no item sold"
          exit;
        }
    }
    $ awk -f exit.awk items-sold.txt
    Item 102 had a month with no item sold

    Note: Item 104 also had a month with no item sold. But, it was not displayed above, as we used exit in the while loop.

     

     

     

     

     

     

  • 相关阅读:
    fscanf_s与scanf_s的宽度参数与缓冲区参数分析
    C语言小程序——推箱子(窄字符和宽字符)
    setlocale()函数详解——C语言
    在源文件(.c)和头文件(.h)中声明和定义的区别——C语言
    枚举类型enum详解——C语言
    宽字符————_T、_TEXT、L、TEXT之间的区别
    宽字符wchar_t和窄字符char——putwchar、wprintf
    extern的使用详解(多文件编程)——C语言
    编程的时候命名词穷了怎么办
    [C#/UI] 使用 await 实现业务对 UI 的控制反转
  • 原文地址:https://www.cnblogs.com/yangfengtao/p/3161443.html
Copyright © 2020-2023  润新知