4.4BSD/usr/src/contrib/bind-4.9/contrib/hostmaint/nictxt2host.awk

BEGIN { FS = ":" }
/^HOST/ {
  ips = $2;
  while (substr(ips,1,1) == " ") ips = substr(ips,2,length(ips)-1);
  while (substr(ips,length(ips),1) == " ") ips = substr(ips,1,length(ips)-1);
  names = $3;
  while (substr(names,1,1) == " ") names = substr(names,2,length(names)-1);
  while (substr(names,length(names),1) == " ") names = substr(names,1,length(names)-1);
  ni = 1;
  j = 1;
  for (i=1; i < length(ips); i++) {
    if (substr(ips,i,1) == ",") {
      iplist[ni++] = substr(ips,j,i-j);
      j = i+1;
    }
  }
  iplist[ni] = substr(ips,j,i);
  nn = 1;
  j = 1;
  for (i=1; i < length(names); i++) {
    if (substr(names,i,1) == ",") {
      nlist[nn++] = substr(names,j,i-j);
      j = i+1;
    }
  }
  nlist[nn] = substr(names,j,i);
  for (ii=1; ii <= ni; ii++) {
    ip = iplist[ii]
    while (substr(ip,1,1) == " ") ip = substr(ip,2,length(ip)-1);
    while (substr(ip,length(ip),1) == " ") ip = substr(ip,1,length(ip)-1);
    printf "%s\t", ip
    for (n=1; n <= nn; n++) {
      name = nlist[n];
      while (substr(name,1,1) == " ") name = substr(name,2,length(name)-1);
      while (substr(name,length(name),1) == " ") name = substr(name,1,length(name)-1);
      printf "%s ", name;
    }
    printf "\n";
  }
  next;
}
/^;/ { printf "#%s\n", substr($0,2,length($0)) }
{ next }