こんにちは
> Excel などのアルファベットから成る列番号を数値に変換する処理です。
> Python と Perl で書かれています。
これは、 26進数を数字にするということでしょうか。
ただし 数字は使わず、アルファベットのみですが。
ためしにこんな感じで書いてみました、ちょっと力わざかもしれません。
>cat data
a
aa
ef
>cat rowtonum.awk
$1 ~/[a-zA-z]+/ {
rowIs = $1
numIs = rowTonum(rowIs)
print toupper(rowIs) " = " numIs
}
function rowTonum(row) {
row = toupper(row)
keta = length(row)
excel["A"] = 1
excel["B"] = 2
excel["C"] = 3
excel["D"] = 4
excel["E"] = 5
excel["F"] = 6
excel["G"] = 7
excel["H"] = 8
excel["I"] = 9
excel["J"] = 10
excel["K"] = 11
excel["L"] = 12
excel["M"] = 13
excel["N"] = 14
excel["O"] = 15
excel["P"] = 16
excel["Q"] = 17
excel["R"] = 18
excel["S"] = 19
excel["T"] = 20
excel["U"] = 21
excel["V"] = 22
excel["W"] = 23
excel["X"] = 24
excel["Y"] = 25
excel["Z"] = 26
dec = 0
for (i = 0; i < keta ; i++) {
dec = dec + excel[substr(row, keta - i, 1)]*26^i
}
return dec
}
>awk -f rowtonum.awk data
A = 1
AA = 27
EF = 136
----------------
くすのき@まっとう