在 awk 编程中有各种各样的流程控制语句

awk 编程中有各种各样的流程控制语句,其中包括:

  1. if-else 语句:

    • 简单的 if 判断语句:
      if (表达式) {
          语句1
      } else {
          语句2
      }
      
    • 多分支语句:
      if (表达式) {
          语句1
      } else if (表达式) {
          语句2
      } else {
          语句3
      }
      

    示例:

    awk 'BEGIN {
        test = 100;
        if (test >= 90) {
            print "very very good";
        } else if (test > 80 && test < 90) {
            print "very good";
        } else if (test > 60) {
            print "good";
        } else {
            print "no pass";
        }
    }'
    
  2. while 循环语句:

    while (表达式) {
        语句
    }
    

    示例:

    awk 'BEGIN {
        test = 100;
        total = 0;
        while (i <= test) {
            total += i;
            i++;
        }
        print total;
    }'
    
  3. for 循环语句:

    • 格式1:
      for (变量 in 数组) {
          语句
      }
      
    • 格式2:
      for (变量; 条件; 表达式) {
          语句
      }
      

    示例:
    格式1:

    awk 'BEGIN {
        for (k in ENVIRON) {
            print k "=" ENVIRON[k];
        }
    }'
    

    格式2:

    awk 'BEGIN {
        total = 0;
        for (i = 0; i <= 100; i++) {
            total += i;
        }
        print total;
    }'
    
  4. do-while 循环语句:

    do {
        语句
    } while (条件)
    

    示例:

    awk 'BEGIN {
        total = 0;
        i = 0;
        do {
            total += i;
            i++;
        } while (i <= 100);
        print total;
    }'
    
  5. 其他关键字:

    • break:中断当前正在执行的循环并跳到循环外执行下一条语句。
    • continue:使程序循环移动到下一个迭代。
    • next:导致读入下一个输入行,并返回到脚本的顶部。
    • exit:使主输入循环退出并将控制转移到 END,如果 END 存在的话。如果没有定义 END 规则,或在 END 中应用 exit 语句,则终止脚本的执行。

这些流程控制语句使得 awk 在处理数据时非常强大且高效。

源: 与必应的对话, 2024/4/7
(1) awk实战2-流程控制语句总结_awk中的流程控制-CSDN博客. https://blog.csdn.net/xinquanv1/article/details/99537105.
(2) awk 系列:在 awk 中如何使用流程控制语句 - Linux 中国. https://linux.cn/article-7723-1.html.
(3) 快收藏! 30 分钟包你学会 AWK - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/97583769.

posted @ 2024-04-07 17:16  hackintosh  阅读(3)  评论(0编辑  收藏  举报