2016-09-21 9 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/\ $/$ $/$ "$ファイルは、少なくとも繰り返し毎回ファイルの書き換えを避けるでしょう。 – 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/$/\トン$ 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を更新しました。これがあなたを助けてくれることを願っています。 –

関連する問題