Text-Processing
無法使用 gawk 對特定列執行命令
我想對輸出的第一列執行特定命令
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 匹配。