我想要打印数字1到100的数字,但是在列中:第一列中的第1到10,第二列中的第一列到第11列,第三列中的第21到第30,...,第10列中的91到100列。
我怎样才能在Bash中实现这一目标?我试过了:
#!/bin/bash
for ((i=1; i <= 100 ; i++)) do
echo " $i"
done
答案 0 :(得分:0)
它有点沉重,因为它产生了许多子过程..但是它发布为1-liner
paste <(seq 1 10) <(seq 11 20) <(seq 21 30) <(seq 31 40) <(seq 41 50) <(seq 51 60) <(seq 61 70) <(seq 71 80) <(seq 81 90) <(seq 91 100)
第1列为1-10,第2列为11-20,等等。
和
seq 1 100 | paste - - - - - - - - - -
第1行1-10,第2行11-20等等。
注意:第二个命令中有10个超时,第一个命令中,&lt;(命令)表示进程替换,即替换进程的输出
编辑:纯粹使用for循环
for ((i=1;i<=10;i++)); do
for ((j=i;j<=(i+90);j+=10)); do
printf "%2d " $j
done
echo
done
第1列为1-10,第2列为11-20,等等。
和
for ((i=0;i<10;i++)); do
for ((j=1;j<=10;j++)); do
printf "%2d " $[$i*10+$j]
done
echo
done
第1行1-10,第2行11-20等等。
答案 1 :(得分:0)
有一种更简单的方法!
$ seq 100 | pr -10t
1 11 21 31 41 51 61 71 81 91
2 12 22 32 42 52 62 72 82 92
3 13 23 33 43 53 63 73 83 93
4 14 24 34 44 54 64 74 84 94
5 15 25 35 45 55 65 75 85 95
6 16 26 36 46 56 66 76 86 96
7 17 27 37 47 57 67 77 87 97
8 18 28 38 48 58 68 78 88 98
9 19 29 39 49 59 69 79 89 99
10 20 30 40 50 60 70 80 90 100