2016-01-29 56 views
-2

所以我的命令是:tshark的定製的grep

tshark -Y 'wlan.fc.type_subtype==0x04' 

所以我的輸出是:

21401 205.735966 Apple_90:ea:8e -> Broadcast 802.11 155 Probe Request, SN=3667, FN=0, Flags=........C, SSID=Broadcast 

我怎樣才能得到Apple_90:EA:8E + SSID =廣播和最新的grep的背後的邏輯?用grep可以嗎?

考慮到:Apple_90:ea:8e和Broadcast會一直改變!

+0

所以'Apple_90:EA:8e'和'SSID ='永遠是相同的,你想知道什麼'Broadcast'是,或做什麼變化,你想究竟是什麼? –

+0

否「Apple_90:ea:8e」和「廣播」將一直髮生變化。 –

+0

那麼,你想要第三個空格分隔的字段?有兩個冒號的東西? ' - >'之前的東西?你不會給我們太多的工作。 –

回答

1
$ var='21401 205.735966 Apple_90:ea:8e -> Broadcast 802.11 155 Probe Request, SN=3667, FN=0, Flags=........C, SSID=Broadcast' 
$ grep -oP '\S+(?= ->)|SSID=\S+' <<< "$var" 
Apple_90:ea:8e 
SSID=Broadcast 

grep的選項-o說:「只返回了什麼相匹配,而不是整個行」和-P就是用Perl的正則表達式引擎(因爲我們使用查找變通)。正則表達式是

\S+  # One or more non-spaces 
(?= ->) # followed by " ->" 
|   # or... 
SSID=\S+ # "SSID=" and one or more non-spaces