gawk を使用して特定の列でコマンドを実行することはできません。

gawk を使用して特定の列でコマンドを実行することはできません。

出力の最初の列で特定のコマンドを実行したいと思いますwpa_cli scan_results。このコマンドはmycmdMACアドレスを入力として使用し、MACとOUIを返します。

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

最初の列を変更するには、wpa_cli scan_results次のコマンドを実行します。

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

ただし、これは最初の列を置き換えるのではなくmycmd削除します。

私のコマンドは外部的に機能しますが、OUIで変更された列の代わりに空の列があるのはなぜですかgawk


スクリプトはmycmd次のとおりです。

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

ベストアンサー1

問題は、行がCR-LFで終わるDOSファイルであるOUIファイルにあります。まず、行がLFで終わるように翻訳する必要があります。したがって、ファイルを使用dos2unix file、使用、またはtr -d '\r' < file > file2編集できます。vim:set ff=unix

しかし、おそらくgrepスキーマを固定する必要があります。このOUIファイルの6桁の郵便番号が誤ってOUIと一致する可能性があります。

おすすめ記事