0

使用此命令,我希望一个命令仅获取当前的 mac 地址,而另一个命令仅获取永久 mac。所以我必须使用 grep 表达式,但我不知道该怎么做。

    $ macchanger -s wlan0
    Permanent MAC: 14:25:47:ff:c4:aa (Twinhan)
    Current MAC: 00:24:54:f0:5c:cc (unknown)

所以我真的很想做类似 macchanger -s wlan0 | grep ...为了准确得到 14:25:47:ff:c4:aa 另一个命令得到 00:24:54:f0:5c:cc 谢谢

4

6 回答 6

2

要获得“永久”行:

macchanger -s wlan0 | awk '/Permanent/ { print $3 }'

要获取“当前”行:

macchanger -s wlan0 | awk '/Current/ { print $3 }'
于 2012-11-01T00:12:20.300 回答
1

我认为你会比使用sed更好grep

macchanger -s wlan0 | sed -n '/^Permanent/s/Permanent MAC: \([0-9a-fA-F:]*\) .*/\1/p'
macchanger -s wlan0 | sed -n '/^Current/s/Current MAC: \([0-9a-fA-F:]*\) .*/\1/p'

这适用于符合 POSIX 的sed; GNUsed有时有自己的想法,但它接受这些并按预期工作。

于 2012-11-01T00:11:18.693 回答
1

如果你想要grep:

macchanger -s wlan0 | grep Permanent | grep -P -o '..:..:..:..:..:..'
macchanger -s wlan0 | grep Current | grep -P -o '..:..:..:..:..:..'
于 2012-11-01T00:14:38.040 回答
1

每个grep地址一个:

grep -P -o '(?<=Permanent MAC: )[a-zA-Z0-9:]+'
grep -P -o '(?<=Current MAC: )[a-zA-Z0-9:]+'
于 2012-11-01T00:15:40.273 回答
0

-o选项将grep做你想做的事。例如:

grep -o '[0-9a-f:]\{17\}'
于 2012-11-01T00:12:32.263 回答
0

此解决方案取决于输出中结果的顺序:

declare -a results
results=($(macchangher -s wlan0 | egrep -oi '([a-f0-9]{2}:){5}[a-f0-9]{2}'))
perm=$results[0]
cur=$results[1]
于 2012-11-01T00:45:15.207 回答