awk ' # deroman | |
# Input: string (tab) [arab or roman] | |
# Output: string (tab) [arab] | |
# Roman numeral n is replaced by arab n-1000 (e.g., iii -> -997) | |
BEGIN { FS = OFS = "\t" | |
# set a["i"] = 1, a["ii"] = 2, ... | |
s = "i ii iii iv v vi vii viii ix x" | |
s = s " xi xii xiii xiv xv xvi xvii xviii xix xx" | |
s = s " xxi xxii xxiii xxiv xxv xxvi xxvii xxviii xxix xxx" | |
n = split(s, b, " ") | |
for (i = 1; i <= n; i++) a[b[i]] = i | |
} | |
$2~/^[ivxlc]+$/ { if ($2 in a) $2 = -1000 + a[$2] | |
else print "deroman: bad number: " $0 | "cat 1>&2" | |
} | |
{ print } | |
' $* |