reroman (647B)
1 awk ' # reroman 2 # Output: string (tab) arab1 [(space) arab2] 3 # Input: string (tab) arab1 or roman1 [(space) arab2 or roman2] 4 5 BEGIN { FS = OFS = "\t" 6 # set a[1] = "i", a[2] = "ii", ... 7 s = "i ii iii iv v vi vii viii ix x" 8 s = s " xi xii xiii xiv xv xvi xvii xviii xix xx" 9 s = s " xxi xxii xxiii xxiv xxv xxvi xxvii xxviii xxix xxx" 10 split(s, a, " ") 11 } 12 $2 < 0 { n = split($2, b, " ") 13 for (i = 1; i <= n; i++) { 14 if (b[i] >= 0) continue 15 j = 1000 + b[i] 16 if (j in a) b[i] = a[j] 17 else print "reroman: bad number: " $0 | "cat 1>&2" 18 } 19 $2 = b[1] 20 if (n > 1) $2 = b[1] " " b[2] 21 } 22 { print } 23 ' $*