使用bash将列打印到文本

时间:2017-10-16 10:23:26

标签: linux bash shell

我有一个shell脚本可以将列打印到文本文件:

#!/bin/bash  
for i in `seq 1 1 174492`;  
do  
for j in `seq 0 100 14000`;  
do  
echo "$j" >> "depth"  
done  
done  

但该计划花了太长时间。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

使用内置大括号扩展而不是调用seq,并重定向整个外循环,而不是每次迭代内循环时打开和关闭文件一次:

for i in {1..174492}  
do  
    for j in {0..14000..100}  
    do  
        echo "$j"  
    done  
done >> "depth"

现在你的开销是循环本身,所以如果这对你来说仍然不够快,那么使用更快的语言:

awk 'BEGIN { 
    for (i = 1; i <= 174492; ++i) 
        for (j = 0; j <= 14000; j += 100) print j
}' >> depth

我在我的系统上进行了测试,花了8秒钟,而shell循环花了2分钟。