mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-09 08:10:09 +08:00
54 lines
1.4 KiB
Awk
54 lines
1.4 KiB
Awk
# $PostgreSQL: pgsql/contrib/mac/ouiparse.awk,v 1.3 2003/11/29 22:39:24 pgsql Exp $
|
|
#
|
|
# ouiparse.awk
|
|
# Author: Lawrence E. Rosenman <ler@lerctr.org>
|
|
# Original Date: 30 July 2000 (in this form).
|
|
# This AWK script takes the IEEE's oui.txt file and creates insert
|
|
# statements to populate a SQL table with the following attributes:
|
|
# create table oui (
|
|
# oui macaddr primary key,
|
|
# manufacturer text);
|
|
# the table name is set by setting the AWK variable TABLE
|
|
#
|
|
# we translate the character apostrophe (') to double apostrophe ('') inside
|
|
# the company name to avoid SQL errors.
|
|
#
|
|
|
|
BEGIN {
|
|
TABLE="macoui";
|
|
printf "DELETE FROM %s;",TABLE;
|
|
printf "BEGIN TRANSACTION;";
|
|
nrec=0;
|
|
}
|
|
|
|
END {
|
|
# if (nrec > 0)
|
|
printf "COMMIT TRANSACTION;";
|
|
}
|
|
|
|
# match ONLY lines that begin with 2 hex numbers, -, and another hex number
|
|
/^[0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F]/ {
|
|
# if (nrec >= 100) {
|
|
# printf "COMMIT TRANSACTION;";
|
|
# printf "BEGIN TRANSACTION;";
|
|
# nrec=0;
|
|
# } else {
|
|
# nrec++;
|
|
# }
|
|
# Get the OUI
|
|
OUI=$1;
|
|
# Skip the (hex) tag to get to Company Name
|
|
Company=$3;
|
|
# make the OUI look like a macaddr
|
|
gsub("-",":",OUI);
|
|
OUI=OUI ":00:00:00"
|
|
# Pick up the rest of the company name
|
|
for (i=4;i<=NF;i++)
|
|
Company=Company " " $i;
|
|
# Modify any apostrophes (') to avoid grief below.
|
|
gsub("'","''",Company);
|
|
# Print out for the SQL table insert
|
|
printf "INSERT INTO %s (addr, name) VALUES (trunc(macaddr \'%s\'),\'%s\');\n",
|
|
TABLE,OUI,Company;
|
|
}
|