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와 일치할 수 있습니다.

관련 정보