我想对 输出的第一列执行特定命令wpa_cli scan_results
。该命令mycmd
将 MAC 地址作为输入并返回 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
问题出在OUI文件上,它是一个DOS文件,其行以CR-LF结尾。您必须首先对其进行翻译,以便各行以 LF 结尾。因此,可以使用 、dos2unix file
或、或使用和tr -d '\r' < file > file2
编辑文件)。vim
:set ff=unix
顺便说一句,你可能应该锚定你的grep
模式。此 OUI 文件中的 6 位邮政编码可能会无意中与您的 OUI 匹配。