在10列

时间:2016-02-10 06:54:52

标签: bash

我想要打印数字1到100的数字,但是在列中:第一列中的第1到10,第二列中的第一列到第11列,第三列中的第21到第30,...,第10列中的91到100列。

我怎样才能在Bash中实现这一目标?我试过了:

#!/bin/bash
for ((i=1; i <= 100 ; i++)) do
    echo " $i"
done

2 个答案:

答案 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