zoukankan      html  css  js  c++  java
  • 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.

     

     

     

     

     

     

  • 相关阅读:
    samba 4.11 or newer version enable SMB1
    linux下使用mv将递归的文件从多个目录移动到一个目录中
    【转载】修改Windows下键盘按键对应功能的一些方案
    ACR122U读卡器在win7以上系统使用过程中的设置项
    恢复Chrome 78以上版本的地址栏https和www显示
    配置sshd的免密码登录
    1234
    MarkDown 语法记录
    语法测试
    解决 Linux grep 不高亮显示
  • 原文地址:https://www.cnblogs.com/yangfengtao/p/3161443.html
Copyright © 2011-2022 走看看