블루투스 MAC 주소 추출: hcitool dev

블루투스 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"임)로 해석됩니다.

이 경우 두 번째 열에 아무것도 없으면 표현식은 $0 = $2"true"가 됩니다. 존재 여부에 관계없이 행의 내용은 $0이 값으로 대체됩니다.

에서 awk조건이나 패턴에 해당 액션 블록( )이 없는 경우 { ... }기본 액션은 액션이 { print $0 }또는 그냥 이었던 것처럼 현재 행을 출력하는 것입니다 { print }.

이는 입력 데이터에서 공백으로 구분된 두 번째 열을 인쇄하는 효과가 있지만 실제로 두 번째 열에 내용이 있는 행에만 해당됩니다.

답변4


존재하다:

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

나가:

xx:xx:xx:xx:xx:xx

관련 정보