返回结果的一部分(GREP)

时间:2012-11-01 00:07:45

标签: regex linux shell grep

使用此命令,我希望只有一个命令可以获取当前的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 谢谢你

6 个答案:

答案 0 :(得分:2)

获取“永久”行:

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

获取“当前”行:

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

答案 1 :(得分: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; GNU sed有时会有自己的想法,但它接受这些并按预期工作。

答案 2 :(得分:1)

如果你想要grep:

macchanger -s wlan0 | grep Permanent | grep -P -o '..:..:..:..:..:..'
macchanger -s wlan0 | grep Current | grep -P -o '..:..:..:..:..:..'

答案 3 :(得分:1)

每个地址一个grep

grep -P -o '(?<=Permanent MAC: )[a-zA-Z0-9:]+'
grep -P -o '(?<=Current MAC: )[a-zA-Z0-9:]+'

答案 4 :(得分:0)

-o的{​​{1}}选项可以满足您的需求。例如:

grep

答案 5 :(得分: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]