2015-04-29 39 views
0

如果我運行命令ping google.com。它會在終端上提供連續的輸出。 輸出示例:如何在bash中修改命令的實時詳細輸出?

64 bytes from 74.125.130.101: icmp_seq=1 ttl=42 time=980 ms 
64 bytes from 74.125.130.101: icmp_seq=2 ttl=42 time=1883 ms 
64 bytes from 74.125.130.101: icmp_seq=3 ttl=42 time=1947 ms 
64 bytes from 74.125.130.101: icmp_seq=4 ttl=42 time=1273 ms 
64 bytes from 74.125.130.101: icmp_seq=5 ttl=42 time=848 ms 
64 bytes from 74.125.130.101: icmp_seq=6 ttl=42 time=1072 ms 
64 bytes from 74.125.130.101: icmp_seq=7 ttl=42 time=1202 ms 

現在,如果我要修改的每個輸出線,只顯示64 bytes from 74.125.130.101:部分,我該怎麼辦呢?

我想知道一個通​​用的方法,它也可以與其他命令一起使用,它們會產生實時的詳細輸出。

+3

只是管SED/AWK /等? –

+2

即'ping google.com | sed's /:.*$//''會給你你請求的輸出。製作這樣一個通用的方法意味着(IMHO)做一些分析,並建立一個你想應用於輸出的動詞列表。在這種情況下,你可以創建一個函數'right_rm'(從右邊移除),但是你仍然需要傳入':。*'作爲參數。在* nix-land中,這與「使用管道減少輸出以獲得所需內容」的標準相反,並且不值得付出努力;-)(對不起)。隨意擴大您的通用定義,我們可能有一些想法來幫助。祝你好運。 – shellter

回答

3

使用cut通過管道:

ping google.com | cut -d":" -f1 
2

AWK-方式:

ping google.com | awk -F ":" '{print $1}' 

,如果你需要尾隨冒號完全一樣的問題:

ping google.com | awk -F ":" '{print $1 ":"}' 

grep的路:

ping google.com | grep -o "^.*:" 

sed的路:

ping google.com | sed 's/\(.*:\).*/\1/'