Text-Processing

無法使用 gawk 對特定列執行命令

  • January 15, 2017

我想對輸出的第一列執行特定命令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 '^......') 

問題在於 OUI 文件,它是一個 DOS 文件,其行以 CR-LF 終止。您必須首先翻譯它,以便這些行以 LF 結尾。所以,要麼dos2unix file,要麼,或用和)tr -d '\r' < file > file2編輯文件。vim``:set ff=unix

順便說一句,您可能應該錨定您的grep模式。此 OUI 文件中有 6 位郵政編碼,可能會無意中與您的 OUI 匹配。

引用自:https://unix.stackexchange.com/questions/337352