我有一个shell脚本可以将列打印到文本文件:
#!/bin/bash
for i in `seq 1 1 174492`;
do
for j in `seq 0 100 14000`;
do
echo "$j" >> "depth"
done
done
但该计划花了太长时间。有更好的方法吗?
答案 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分钟。