shell脚本对文本文件中的手机号码脱敏处理

例如文件如下aa189543213428618954321342bb189543213438618954321343对文件中匹配到的手机号码(包括86开头)后四位进行变换... 例如文件如下
aa 18954321342 8618954321342
bb 18954321343 8618954321343

对文件中匹配到的手机号码(包括86开头)后四位进行变换,变换规则为:1->2,2->3,0->9,9->0。
变换后的文件文件为
aa 18954322453 8618954322453
bb 18954322454 8618954322454
展开
 我来答
albumin
2017-04-15 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2393万
展开全部
awk 'BEGIN {convert["0"]="1";convert["1"]="2";convert["2"]="3"
convert["3"]="4";convert["4"]="5";convert["5"]="6"
convert["6"]="7";convert["7"]="8";convert["8"]="9"
convert["9"]="0"}
function subdigit(  tmp) {
         tmp=$0
         start=0
         while(match(tmp,/(^|[^0-9])[0-9]*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]($|[^0-9])/)>0)
         {
             start=start+RSTART+RLENGTH
             c=substr($0,start-1,1)
             if(match(c,/[^0-9]/)>0||start>length($0)+1) start=start-1
             tmp=substr($0,start)
             s=""
             for(i=1;i<=4;i++)
             {
                    c=substr($0,start-i,1)
                    c=convert[c]
                    s=c s
             }
             $0=substr($0,1,start-5) s substr($0,start)
         }
     }
     { subdigit($0)
        print $0}'   旧文件名 > 新文件名
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式