#! /usr/bin/gawk -f # Last edited on 2023-09-12 08:34:42 by stolfi # Converts raw feature data collected manually to # feature mark descriptions. # Caller must define (with "-v") the variable {sg} (sign code, # e.g. "E02") # # The file must include lines "r1 = {R1}" and "r2 = {R2}" # If each radius is positive generates a "C" mark, else a "X" mark. BEGIN { if (sg == "") { arg_error("must define {sg}"); } r1 = "?"; r2 = "?" } /^r[0-9][ ]*[=]/ { gsub(/ *[=] */, " = ", $0); # Just in case } /^r1[ =]/ { r1 = $3 + 0; m1 = (r1 > 0 ? "C" : "X"); mr1 = (r1 > 0 ? r1 : 16) next; } /^r2[ =]/ { r2 = $3 + 0; m2 = (r2 > 0 ? "C" : "X"); mr2 = (r2 > 0 ? r2 : 16) next; } /^[AB]/{ oc = $1; x1 = $2; y1 = $3; x2 = $4; y2 = $5; if (r1 == "?") { arg_error("missing definition of {r1}"); } if (r2 == "?") { arg_error("missing definition of {r2}"); } printf "%-5s %3s", oc, sg; printf " %s %6.1f %6.1f %4.1f", m1, x1+r1, y1+r1, mr1; printf " %s %6.1f %6.1f %4.1f", m2, x2+r2, y2+r2, mr2; printf "\n"; next; } //{ print; next} function arg_error(msg) { printf "** %s\n", msg > "/dev/stderr"; exit(1) }