需要在excel中对找到的单元下一列进行操作,不过原工具在列操作上只能使用字母但又没有提供字母的简单运算,需要自己编写脚本实现这个功能。原帖链接搜到初始方法如下 http://blog.youkuaiyun.com/bripengandre/article/details/6553776#comments,不过不完全满足我的要求。但是提供了一个字母数字互转的一个思路,按照这个逻辑,功能设计如下,先将字母转换为数字,自增一之后再转换为字母
#!/bin/sh
letter=$1
digit=`echo ${letter} | awk -v letter_cnt=26 -v input=$letter '
BEGIN{
for(i = 1; i <= letter_cnt; i++)
{
ch = sprintf("%c", i+64);
trans_tablel2d[ch] = i;
trans_tabled2l[i] = ch;
}
}
{
value = 0;
while ( length(input) != 0 )
{
ltr = substr(input,1,1);
input = substr(input,2);
value = trans_tablel2d[ltr] + value * 26;
}
value += 1;
while ( value > 0 )
{
i++;
mod = value % 26;
if ( mod == 0 )
{
ltr = "Z";
value -= 26;
}
else
{
ltr = trans_tabled2l[mod];
}
printf ("%c", ltr);
value = (value-mod) / 26;
}
}' | rev`
if [ $? -ne 0 -o "x${digit}" == "x" ]; then
echo "invalid letter, must be [A-Z]"
else
echo "${digit}"
fi