AWK - 在循环中打印行?

问题描述:

我有这样的命令:AWK - 在循环中打印行?

$ 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 _ _ _ _ _ _ _ _ _ 

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

此命令的作用。感谢您的帮助。 – Tedee12345 2012-04-15 15:17:50

这与沃恩的答案,但如果这是很重要的可能会快一点。

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

谢谢你的另一个好的解决方案。 – Tedee12345 2012-04-15 17:35:40

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

您已经有了想要的输出,因为您已经输入了它。只要使用那段文字即可。

下面的脚本直接从您的预期输出导出:

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

感谢您提出解决方案。 – Tedee12345 2012-04-16 05:49:29