2013-08-30 77 views
0
for ((x=1; $x<=300; x++)); do (ping world$x.runescape.com -n 20 | grep Minimum | grep -oP "(?<=Minimum =)[0-9]+(?=ms)" >> RuneScape_Ping_Output.txt); done 

這是幹什麼的ping world.runescape.com 20次,並尋找最小的ping並將其存儲爲其輸出。它將按照指定的方式爲world1.runescape.com一路做到world300.runescape.com。輸出只是最小ping值的單個數字。添加帶腳本輸出的文本

我遇到的問題是我想要世界編號和它存儲的輸出。所以,當它ping通world1.runescape.com而不是隻存儲數字30(30是ms)時,我希望它顯示World1,30。那麼,如果它確實world233.runescape.com例如它會顯示World233,55

有沒有辦法做到這一點?因爲有時World122沒有World123,所以除非我給每個ping添加了標籤,否則World124會放在World123的位置,如果沒有值返回123,它會給出錯誤的結果,所以我需要給它們加上標題以獲取佔位符。

回答

1

你想在輸出的每一位之前回顯。

for ((x=1; $x<=300; x++)); do 
    echo -n "world$x," 
    ping world$x.runescape.com -n 20 | grep Minimum | grep -oP "(?<=Minimum =)[0-9]+(?=ms)" 
done > RuneScape_Ping_Output.txt 

我已經移動了外部重定向,假設您不想累積結果,只需獲取最新設置。

+0

這很好。我想用逗號分開它們的原因是,當我用excel打開它時,可以使用逗號分隔它們。我運行它時遇到的問題是,不返回任何值或找不到任何輸出的ping會混亂。例如,如果ping超時,則無法找到修剪和輸出的單詞「minimum」。那麼有沒有辦法返回0找不到輸出的東西?會用一個「如果」或什麼的? – Aaron

+1

添加'|| echo 0'到grep行。 –

+0

但是如果ping失敗,它會說「請求超時」。那麼補充一點,仍然做我正在嘗試的?如果它根本無法ping通,我希望它顯示0或任何我選擇的ya知道 – Aaron