2016-09-21 44 views
0

我想我的文件,記錄這樣的:擊:多次執行命令和輸出寫入標籤分隔到文件

Time_Namelookup: 0,1 0,2 0,12 0,45  ... 
Time_Connect: 0,34 0,23 0,23 0,11   ... 
Time_Starttransfer: 0,9 0,23 0,12   ... 

我想要的值被添加到他們的具體每n秒線。

我有這樣的代碼:

while [ "true" ] 
do 
echo "Time_Namelookup:" >> $file 
curl -w "%{time_namelookup}\t" -o /dev/null -s https://website.com/ 
echo "Time_connect" >> $file 
curl -w "%{time_connect}\t" -o /dev/null -s https://website.com/ 
echo "Time_Starttransfer:" >> $file 
curl -w "%{time_starttransfer}\t" -o /dev/null -s https://website.com/ 
sleep 5 
done 

但我得到的東西像

Time_Namelookup: 0,1   
Time_Connect: 0,34   
Time_Starttransfer: 0,9 

Time_Namelookup: 0,2  
Time_Connect:0,23 0,23   
Time_Starttransfer: 0,23 

Time_Namelookup: 0,45  
Time_Connect: 0,11   
Time_Starttransfer: 0,12 

你能幫助我嗎?

回答

0

你可以把你的這個循環中

if [ ! -f $file ]; then 
    echo "Time_Namelookup:" > $file 
    echo "Time_Connect:" >> $file 
    echo "Time_Starttransfer:" >> $file 
fi 

name_lookup=$(curl -w "%{time_namelookup}\t" -o /dev/null -s https://website.com/) 
connect=$(curl -w "%{time_connect}\t" -o /dev/null -s https://website.com/) 
starttransfer=$(curl -w "%{time_starttransfer}\t" -o /dev/null -s https://website.com/) 
sed -i -e "s/\(Time_Starttransfer:.*\)/\1 $starttransfer/" \ 
    -e "s/\(Time_Connect:.*\)/\1 $connect/" \ 
    -e "s/\(Time_Starttransfer:.*\)/\1 $starttransfer/" \ 
    $file 
+0

這顯然是做了OP想要的東西,但它絕對是可怕的。一個單一的'SED -i -e」 1/\ $/$ firstvalue /「-e」2s/\ $/$ secondvalue /「-e」3s/\ $/$ thirdvalue /「」$ file「'至少可以避免在每次迭代中多次重寫文件 – tripleee

0

你可以試試這個;

file=yourFile 
echo "Time_Namelookup :" >> $file 
echo "Time_Connect  :" >> $file 
echo "Time_Starttransfer:" >> $file 
while [ "true" ] 
do 
time_namelookup=$(curl -w "%{time_namelookup}\t" -o /dev/null -s https://website.com/) 
time_connect=$(curl -w "%{time_connect}\t" -o /dev/null -s https://website.com/) 
time_starttransfer=$(curl -w "%{time_starttransfer}\t" -o /dev/null -s https://website.com/) 
sed -i "/Time_Namelookup :/s/$/\t$time_namelookup/" $file 
sed -i "/Time_Connect  :/s/$/\t$time_connect/" $file 
sed -i "/Time_Starttransfer:/s/$/\t$time_starttransfer/" $file 
sleep 5 
done 

sed -i :要就地編輯。

以下部分是在文件中查找「Time_Namelookup:」。

/Time_Namelookup :/ 

/S/$/\ T $ time_namelookup/「

s   :substitute command 
/../../ :delimiter 
$   :end of line character. 
\t$time_namelookup: to append tab and the value. 
+0

。非常好的方法。你能解釋我的sed部分嗎? – JMAD2016

+0

@ JMAD2016。我更新了ans。我希望這可以幫助你。 –

相關問題