Je dois me frapper la tête contre le mur en essayant de comprendre ce que je fais mal. Mon code est actuellement ceci:Bash Script passe une variable qui est un nombre hexadécimal à un Perl Regex Recherche pour correspondre à l'adresse MAC
#!\bin\sh
read -p "Enter Third Octet Here " octet
perl -ne 'while(/[0-9A-F]{2}[:-][0-9A-F]{2}[:-]("$ENV{'$octet'}")[:-][0-9A-F]{2}[:-][0-9A-F]{2}[:-][0-9A-F]{2}(?=((\s)|(\/)))/ig){print "$&\n";}' manuf.txt
perl -ne 'while(/[0-9A-F]{2}[:-][0-9A-F]{2}[:-]("$ENV{'$octet'}")(?=((\s)|(\/)))/ig){print "$&\n";}' manuf.txt
Ce que je suis en train de faire est d'identifier le troisième octet d'une adresse MAC à une liste de recherche du fabricant (https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob_plain;f=manuf). Je veux que le script passe la variable 55, B3, B3, FF à la doublure perl et l'insère dans l'expression rationnelle de MAC, puis l'impression correspond ligne par ligne. Jusqu'à présent, sans la variable, il trouvera toutes les adresses MAC du fichier, qu'elles soient marquées d'un: ou de a - et qu'il s'agisse d'une chaîne de 6 octets ou d'une chaîne de 3 octets. avec la variable d'env, elle ne retourne rien. J'ai tout essayé et rien ne semble fonctionner. Je frappe un mur
Je veux aussi être en mesure de faire une correspondance secondaire basée sur les 3ème et 4ème octets et une correspondance tertiaire basée sur les 3ème et 4ème et 5ème octets, mais c'est un objectif éloigné au-delà de simplement l'obtenir au travail
lui donnant une shot rn –
cette ligne fonctionne. Il imprime, par exemple c2 si je mets la variable comme c2 dans bash. Comment l'intégrer dans la ligne: –
perl -ne 'while (/ [0-9A-F] {2} [: -] [0-9A-F] {2} [: -] ("$ ENV { '$ octet'} ") [: -] [0-9A-F] {2} [: -] [0-9A-F] {2} [: -] [0-9A-F] {2} (? = ((\ s) | (\ /)))/ig) {print "$ &\n";} 'manuf.txt –