我必须从命令中提取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