Extrair endereço MAC Bluetooth: hcitool dev

5

Eu tenho que extrair do comando hcitool dev somente o endereço MAC do dongle bluetooth.

A saída de hcitool dev é:

Devices:
hci0    xx:xx:xx:xx:xx:xx

Eu escrevo essa saída em um arquivo e tento obter as informações com awk :

hcitool dev > /home/pi/mario/BT.txt
awk ' { print $2 } ' /home/pi/mario/BT.txt

A saída também contém a primeira linha que é uma célula vazia:


xx:xx:xx:xx:xx:xx

Como posso adiar a primeira célula?

    
por mario 31.10.2014 / 09:46

5 respostas

3

Para o seu propósito, é suficiente grep

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

-o saídas apenas encontradas patten

[[:xdigit:]:] significa todos os dígitos hexadecimais mais : char

{11,17} o conjunto de caracteres não deve ser menor que 11 não mais 17 de comprimento

    
por 31.10.2014 / 10:12
3

tente

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

onde

  • NR>1 significa ignorar a primeira linha. (NR: Número de registro)
por 31.10.2014 / 09:57
1

corte

em:

hcitool dev | cut -sf3

out:

xx:xx:xx:xx:xx:xx
    
por 17.01.2016 / 21:40
1
hcitool dev | awk '$0=$2'

Com awk e muitas outras linguagens, uma atribuição pode ser usada como condicional. O valor atribuído é então interpretado como um valor booleano (o inteiro zero, ou uma string vazia, é "false").

Nesse caso, a expressão $0 = $2 será "true" se houver alguma coisa na segunda coluna. Independentemente de haver ou não, o conteúdo da linha, $0 , será substituído por este valor.

Em awk , quando uma condição ou padrão não tiver um bloco de ação correspondente ( { ... } ), a ação padrão será a saída da linha atual, como se a ação tivesse sido { print $0 } ou apenas { print } .

Isso tem o efeito de imprimir a segunda coluna delimitada por espaços em branco nos dados de entrada, mas apenas para as linhas em que há realmente algo na segunda coluna.

    
por 11.10.2017 / 18:46
-2

awk

em:

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

out:

xx:xx:xx:xx:xx:xx
    
por 11.10.2017 / 13:21