
명령에서 추출해야합니다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