web-dev-qa-db-ja.com

Bluetooth MACアドレスの抽出:hcitool dev

コマンドhcitool devonlyから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 

最初のセルを延期するにはどうすればよいですか?

5
mario

あなたの目的はかなり十分ですgrep

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

-o出力が見つかったばかり

[[:xdigit:]:]は、すべての16進数と: char

{11,17}文字セットの長さは11未満でも17以下でもない

3
Costas

試す

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

どこ

  • NR>1は、最初の行をスキップすることを意味します。 (NR:レコード数)
4
Archemar

切る


in:

hcitool dev | cut -sf3

out:

xx:xx:xx:xx:xx:xx
1
voices
hcitool dev | awk '$0=$2'

awkおよび他の多くの言語では、割り当てを条件として使用できます。割り当てられた値は、ブール値として解釈されます(整数のゼロまたは空の文字列は「false」です)。

この場合、2番目の列に何かがあると、式$0 = $2は「true」になります。あるかどうかに関係なく、行の内容$0はこの値に置き換えられます。

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

これは、入力データの2番目の空白で区切られた列を印刷する効果がありますが、実際には2番目の列に何かがある行に対してのみです。

1
Kusalananda