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");
}
}
'
答
这与沃恩的答案,但如果这是很重要的可能会快一点。
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
此命令的作用。感谢您的帮助。 – Tedee12345 2012-04-15 15:17:50