Bluetooth MACアドレス抽出:hcitool dev

Bluetooth MACアドレス抽出:hcitool dev

コマンドから抽出する必要がありますhcitool dev ただBluetoothアダプタの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見つけたばかりのパターンを出力します。

[[:xdigit:]:]すべての16進数字と:文字を表します。

{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または空の文字列は「false」)。

この場合、2番目の列に何もない場合、式は$0 = $2"true"になります。存在するかどうかにかかわらず、行の内容は$0この値に置き換えられます。

awk条件またはパターンに対応するアクションブロック()がない場合、{ ... }デフォルトのアクションはアクションがまたは単に{ print $0 }だったかのように現在の行を出力することです{ print }

これは、入力データからスペースで区切られた2番目の列を印刷する効果がありますが、実際には2番目の列に内容がある行にのみ適用されます。

答え4

アッ


存在する:

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

出て:

xx:xx:xx:xx:xx:xx

関連情報