0

私はこのコマンドを持っています:

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

3 に答える 3

3
awk '
  BEGIN { 
    for (i=0; i<9; ++i) {
      printf("%d",i+1);
      for (j=0; j<9; ++j) {
        printf(" _");
      }
      printf("\n");
    }
  }
'
于 2012-04-15T14:42:57.423 に答える
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) }'
于 2012-04-15T16:20:03.210 に答える
1

小さくて単純なテキストを生成するためのコードをわざわざ書くのはなぜですか?

入力したので、必要な出力がすでにあります。そのテキストを使用してください。

次のシェルスクリプトは、期待される出力から直接派生しています。

cat <<EOF
1 _ _ _ _ _ _ _ _ _
2 _ _ _ _ _ _ _ _ _
3 _ _ _ _ _ _ _ _ _
4 _ _ _ _ _ _ _ _ _
5 _ _ _ _ _ _ _ _ _
6 _ _ _ _ _ _ _ _ _
7 _ _ _ _ _ _ _ _ _
8 _ _ _ _ _ _ _ _ _
9 _ _ _ _ _ _ _ _ _
EOF
于 2012-04-16T00:53:27.387 に答える