El problema esta en que no sé como procesar una MAC entera y buscar alguna coincidencia en la lista, pues en la de ieee solo estaban los primeros 24 bits, por tanto, solo tenía que recortar los primeros 24bits de la MAC original y compararla con la lista (en el caso de IEEE.org usaba esto):
el parsing es mas complejo pero no es tan dificil si sabes usar el "anchor" de inicio de linea de grep
Bastante sencillo, sin embargo, con esta lista sé como "preparar el texto" para poder usarlo,
pues eso, que no te consigues figurarte la forma de parsearlo. pero si te exprimes las neuronas los sacas.
lo prmero es normalizar los separadores. personalmente optaria por eliminar todas las ocurrencias de ":" y de "-", que ambas son toleradas en el fichero de wireshark.
con eso, te quedas simplemente con los datos relevantes.
luego, usando grep, separaria temporalmente el fichero padre en varios ficheros:
- un fichero de macs con especificacion de 16 bits, buscados por la expresion "/16". tomas los 4 primeros caracteres de cada linea, y ya lo tienes.
- un fichero de macs con especificacion de 32 bits, buscados por la expresion "/32". tomas los 8 primeros caracteres de cada linea, y ya lo tienes.
- un fichero de macs con especificacion de 36 bits, buscados por la expresion "/36". tomas los 9 primeros caracteres de cada linea, y ya lo tienes.
- un fichero de macs con especificacion de 40 bits, buscados por la expresion "/40". tomas los 10 primeros caracteres de cada linea, y ya lo tienes.
- por ultimo, un fichero de macs sin especificacion de mascara. es decir, unos 24 bits relevantes de toda la vida, las tres primeras parejas de las macs: 123456xxxxxx. este tendria mas truco, tendrias que hacer una búsqueda negativa del caracter "/", es decir, las lineas que no tienen la barra, porque no estan especificando máscaras diferentes a la clásica de 24 bits. cuando ya tienes esas lineas, puedes tomar los primeros seis caracteres como valor, y ya lo tienes.
ahora que tienes estas 5 sublistas, las concatenas, empezando por la que mayor máscara tiene (las de 40), para que la busqueda mas exacta sea la primera en salir (algunos registros son hijos de otros, por eso te digo que tienes que buscar de mas especifico a mas general. tienes un caso muy claro de lo que te digo en el registro llamado
"00:1B:C5 IeeeRegi # IEEE Registration Authority"
donde los siguientes registros son claramente "subtipos" que comparten los seis primeros caracteres, pero que mejoran la clasificacion añadiendo más caracteres.
lo que te resultará mas complicado es tomar el nombre de fabricante detŕas de la almohadilla #, y en caso de que no exista (algunas lineas no tienen), tomar el nombre corto de wireshark. para ese tipo de trabajo de procesamiento inteligente de texto, necesitas algo mas de conocimiento de sed y de awk, los procesadores de flujos texto de gnu por excelencia. tambien podrias usar un pequeño apoyo en perl, que tiene funciones muy buenas para estos casos
si procesas el archivo de esa manera, ya casi lo tienes.
EDIT:
supon que ya tienes el fichero de macs parseado tal que asi:
0001020304 fabricante0
12345678 fabricante1_familia1
12345690 fabricante1_familia2
123456 fabricante1_general
789012 fabricante2
sabemos que las macs tienen 40,36,32,24,16 bits relevantes.
para buscar la mac "00:01:02:03:04:05", solo tienes que:
tomar los 40 primeros bits (10 digitos) y buscar en la lista con egrep:
^0001020304
(donde ^ es el anchor de inicio de linea, para evitar coincidencias falsas en cosas que no son el inicio exacto de la mac)
si no encuentras coincidencias, buscas coincidencias por 36 bits (que son 9 caracteres), o sea, quitas un caracter mas y sigues buscando:
^000102030
asi hasta que encuentres una coincidencia en las listas.
dificil, verdad?

con bash, si lo es, un poco. muchas operaciones intermedias y archivos temporales necesarios.
si te parece muy rallante, lo mejor que puedes hacer es tomar la lista de xx:xx:xx, procesarla manualmente, incorporporarla junto al script y listo. los registros de longitudes diferentes a XX:XX:XX son pocos y puedes descartarlos sin que suponga un grave penalty