【问题标题】:AWK - print lines in the loop?AWK - 在循环中打印行?
【发布时间】:2012-04-15 14:37:28
【问题描述】:

我有这个命令:

$ awk 'BEGIN{c="1"; for(i=NF; i<9; i++) print c++, "_"}'
1 _
2 _
3 _
4 _
5 _
6 _
7 _
8 _
9 _

我希望这个命令打印结果:

1 _ _ _ _ _ _ _ _ _
2 _ _ _ _ _ _ _ _ _
3 _ _ _ _ _ _ _ _ _
4 _ _ _ _ _ _ _ _ _
5 _ _ _ _ _ _ _ _ _
6 _ _ _ _ _ _ _ _ _
7 _ _ _ _ _ _ _ _ _
8 _ _ _ _ _ _ _ _ _
9 _ _ _ _ _ _ _ _ _

【问题讨论】:

    标签: for-loop awk


    【解决方案1】:
    awk '
      BEGIN { 
        for (i=0; i<9; ++i) {
          printf("%d",i+1);
          for (j=0; j<9; ++j) {
            printf(" _");
          }
          printf("\n");
        }
      }
    '
    

    【讨论】:

      【解决方案2】:

      这类似于 Vaughn 的回答,但如果这很重要,可能会快一点。

      awk 'BEGIN { str = ""; for (i = 1; i <= 9; i++) str = str" _";
                   for (i = 1; i <= 9; i++) printf("%d%s\n", i, str) }'
      

      【讨论】:

        【解决方案3】:

        为什么要编写代码来生成一小段简单的文本?

        你已经有了你想要的输出,因为你输入了它。就用那段文字吧。

        以下 shell 脚本直接来自您的预期输出:

        cat <<EOF
        1 _ _ _ _ _ _ _ _ _
        2 _ _ _ _ _ _ _ _ _
        3 _ _ _ _ _ _ _ _ _
        4 _ _ _ _ _ _ _ _ _
        5 _ _ _ _ _ _ _ _ _
        6 _ _ _ _ _ _ _ _ _
        7 _ _ _ _ _ _ _ _ _
        8 _ _ _ _ _ _ _ _ _
        9 _ _ _ _ _ _ _ _ _
        EOF
        

        【讨论】:

          猜你喜欢
          • 2017-10-07
          • 2015-04-03
          • 2020-05-01
          • 2020-04-21
          • 2023-03-12
          • 1970-01-01
          • 1970-01-01
          • 2016-12-23
          • 2020-09-03
          相关资源
          最近更新 更多