代码之家  ›  专栏  ›  技术社区  ›  Nitescu Lucian

Tshark自定义grep

  •  -2
  • Nitescu Lucian  · 技术社区  · 9 年前

    所以我的命令是:

    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将永远改变!

    1 回复  |  直到 9 年前
        1
  •  1
  •   Benjamin W.    9 年前
    $ 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正则表达式引擎(因为我们使用lookaround)。正则表达式是

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