Não é possível executar o comando para uma coluna específica com o gawk

1

Eu quero executar um comando específico para a primeira coluna da saída de wpa_cli scan_results . Esse comando, chamado mycmd , está pegando um endereço MAC como entrada e retorna o MAC e o OUI:

# ./mycmd AC:EE:9E:11:22:33 
AC:EE:9E:11:22:33   Samsung Electronics Co.,Ltd

Para alterar a primeira coluna wpa_cli scan_results , eu corro o seguinte:

wpa_cli scan_results| sed 1d | gawk '{"./mycmd "$1| getline $1 }1'

No entanto, isso não substitui a primeira coluna por mycmd , mas exclui a primeira coluna.

Por que tenho uma coluna vazia em vez da coluna modificada com o OUI, embora meu comando funcione fora de gawk ?

O script mycmd é o seguinte:

 #!/bin/bash
 cat ieee-oui.txt  | grep -i $(echo $1 | sed 's/://g' | grep -o '^......') 
    
por user123456 14.01.2017 / 14:23

1 resposta

3

O problema está no arquivo OUI, é um arquivo DOS cujas linhas são terminadas em CR-LF. Você deve primeiro traduzi-lo para que as linhas sejam terminadas em LF. Portanto, dos2unix file ou tr -d '\r' < file > file2 ou edite o arquivo com vim e :set ff=unix ).

BTW, você provavelmente deve ancorar seu padrão grep . Existem códigos postais de 6 dígitos neste arquivo OUI que podem corresponder inadvertidamente ao seu OUI.

    
por 14.01.2017 / 15:26