qse/regress/awk/lang-035.awk

75 lines
1.4 KiB
Awk

BEGIN {
# the maximum numbers of different voice
# numbers for a single circuit ID
max_cid_vars = 100;
datapath = datadir "/" datafile;
first = 1;
while ((getline x < datapath) > 0)
{
# check if it is the first line.
if (first)
{
# skip it if so
first = 0;
continue;
}
# split a line into fields
n = split (x, f, ",");
if (n < 3) continue;
# filter out data with an empty number.
if (f[3] == "") continue;
# store unique voice numbers to a table
for (suffix = 0; suffix < max_cid_vars; suffix++)
{
oldval = tab[f[2],suffix];
if (oldval == "")
{
# store a cid/val pair into a table
tab[f[2],suffix] = f[3];
break;
}
}
}
}
/^lease[[:space:]]+.+[[:space:]]*{[[:space:]]*$/ {
# reset the counter for each "lease x.x.x.x {" line
voice_no=0;
}
{
if ($1 == "option" && $2 == "agent.circuit-id")
{
# extract the circuit ID
pos = index ($0, "agent.circuit-id ")
len = length($0);
last = substr ($0, len, 1);
adj = 0; if (last != ";") adj++;
cid = substr ($0, pos + 17, length($0) - (pos + 17 + adj));
# insert all instances of voice numbers for a circuit ID
for (suffix = 0; suffix < max_cid_vars; suffix++)
{
val = tab[cid,suffix];
if (val == "") break;
print " info awk.voice-no-" voice_no " " val ";";
voice_no++;
}
}
print $0;
if ($1 == "hardware" && $2 == "ethernet")
{
# append group information
print " info awk.groupname \"" groupname "\";";
}
}