2013-08-04 74 views
0

我有這樣的代碼輸出重定向到一個新的列在bash

#!/bin/bash 
for i in {1..10} 
do 
    wget www.abc.com?id=$i >> sample.txt 
    job_id_var=$(grep -E "jobId" sample.txt) # return 5 in first iteration, 10 in second 
    run_id=$(grep -E "runid" sample.txt) # return 1001 in first iteration, 1002 in second 
done 

,我想在下面的格式創建一個文件
輸出:

job_id run_id 
5 1001 
10 1002 
+0

你可以具體說明你如何迭代? –

+0

顯示sample.txt的內容或者至少有趣的部分 – hek2mgl

+0

wget 10個不同的頁面(通過循環),並從頁面中grep jobId和runid。 –

回答

1

這會幫助你 -

#!/bin/bash 
    echo job_id run_id 
    for i in {1..10} 
    do 
     wget www.abc.com?id=$i > sample.txt 
     job_id_var=$(grep -E "jobId" sample.txt) # return 5 in first iteration, 10 in second 
     run_id=$(grep -E "runid" sample.txt) # return 1001 in first iteration, 1002 in second 
     echo "$job_id_var" "$run_id" >> outputfile 
    done 

說明: 使用echo $YOUR_VAR >> filename,您可以根據需要將變量追加到文件中。我沒有格式化好,可能是你可以做到這一點。

我也看到你用>>追加sample.txt - 我建議你用>覆蓋,如果能解決你的問題。

+0

你的建議很有道理,謝謝。我還有一個疑問是,如果我從另一個循環中grep多出一個輸出,並且希望在與該數據相同的文件中創建一個新列,該怎麼辦? –

+0

一種方法是將輸出從第一個循環臨時存儲到數組中,並在第二個循環中追加到第二個循環的每個迭代的每個數組元素的輸出並將其寫入輸出文件。 –