コマンドから抽出する必要があります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