출력의 첫 번째 열에서 특정 명령을 실행하고 싶습니다 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
문제는 줄이 CR-LF로 끝나는 DOS 파일인 OUI 파일에 있습니다. 먼저 줄이 LF로 끝나도록 번역해야 합니다. 따라서 파일을 사용 dos2unix file
하거나, 사용하거나 tr -d '\r' < file > file2
편집할 수 있습니다.vim
:set ff=unix
그런데 아마도 grep
스키마를 고정해야 할 것입니다. 이 OUI 파일의 6자리 우편번호가 실수로 OUI와 일치할 수 있습니다.