提取蓝牙MAC地址:hcitool dev

提取蓝牙MAC地址:hcitool dev

我必须从命令中提取hcitool dev 仅有的蓝牙适配器的 MAC 地址。

的输出hcitool dev是:

Devices:
hci0    xx:xx:xx:xx:xx:xx

我将此输出写入文件并尝试使用以下方式获取信息awk

hcitool dev > /home/pi/mario/BT.txt
awk ' { print $2 } ' /home/pi/mario/BT.txt

输出还包含第一行,它是一个空单元格:

xx:xx:xx:xx:xx:xx

我怎样才能推迟第一个单元格?

答案1

对你来说目的就足够了grep

hcitool dev | grep -o "[[:xdigit:]:]\{11,17\}"

-o输出刚刚找到的patten

[[:xdigit:]:]表示所有十六进制数字加:字符

{11,17}字符集的长度不得小于 11 且不得超过 17

答案2

尝试

 awk 'NR>1 { print $2 } ' /home/pi/mario/BT.txt

在哪里

  • NR>1表示跳过第一行。 (NR:记录数)

答案3

hcitool dev | awk '$0=$2'

对于awk许多其他语言,赋值可以用作条件。然后分配的值被解释为布尔值(整数零或空字符串为“假”)。

在这种情况下,如果第二列中有任何内容,则表达式$0 = $2将为“true”。不管有没有,行的内容$0都会被这个值替换。

在 中awk,当条件或模式没有相应的操作块 ( { ... }) 时,默认操作是输出当前行,就好像操作已经是{ print $0 }或 只是 一样{ print }

这具有打印输入数据中第二个空白分隔列的效果,但仅限于第二列中实际存在某些内容的行。

答案4

awk


在:

hcitool dev | awk '/hci0/ {print $2}'

出去:

xx:xx:xx:xx:xx:xx

相关内容