2016-01-29 22 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