#!/usr/bin/awk -f
# Parse IEEE OUI vendor list to JSON
# http://standards.ieee.org/develop/regauth/oui/oui.txt
# ---
# Usage:
# $ chmod +x parseoui.awk
# $ wget http://standards.ieee.org/develop/regauth/oui/oui.txt
# $ ./parseoui.awk oui.txt > oui.json
BEGIN {
print "[";
}
/(hex)/ {
printf "{ \"oui\": \"%s\", \"vendor\": \"%s\"},\n", $1, substr($0, index($0, $3),length($3));
}
END {
print "]";
}
Вот правильный скрипт. В чем проблема - в том, что у тебя вот тут:
substr($0, index($0, $3))
Извлекалось "от начала третьего элемента и до конца строки", куда попадал символ перевода строки.
Вариант
substr($0, index($0, $3),length($3))
Уже извлечение от начала третьего элемента на длинну третьего элемента, куда не попадает символ перевода строки и все печатается отлично.