コマンドhcitool dev
onlyから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
最初のセルを延期するにはどうすればよいですか?
あなたの目的はかなり十分ですgrep
hcitool dev | grep -o "[[:xdigit:]:]\{11,17\}"
-o
出力が見つかったばかり
[[:xdigit:]:]
は、すべての16進数と:
char
{11,17}
文字セットの長さは11未満でも17以下でもない
試す
awk 'NR>1 { print $2 } ' /home/pi/mario/BT.txt
どこ
NR>1
は、最初の行をスキップすることを意味します。 (NR:レコード数)in:
hcitool dev | cut -sf3
out:
xx:xx:xx:xx:xx:xx
hcitool dev | awk '$0=$2'
awk
および他の多くの言語では、割り当てを条件として使用できます。割り当てられた値は、ブール値として解釈されます(整数のゼロまたは空の文字列は「false」です)。
この場合、2番目の列に何かがあると、式$0 = $2
は「true」になります。あるかどうかに関係なく、行の内容$0
はこの値に置き換えられます。
awk
では、条件またはパターンに対応するアクションブロック({ ... }
)がない場合、デフォルトのアクションは、アクションが{ print $0 }
であるかのように現在の行を出力することです。ちょうど{ print }
。
これは、入力データの2番目の空白で区切られた列を印刷する効果がありますが、実際には2番目の列に何かがある行に対してのみです。