簡體   English   中英

使用bash將列打印到文本

[英]Printing a column to a text using bash

我有一個Shell腳本將一列打印到文本文件:

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

但是該程序花費的時間太長。 有一個更好的方法嗎?

使用內置的括號擴展而不是調用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分鍾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM