shell脚本对文本文件中的手机号码脱敏处理
例如文件如下aa189543213428618954321342bb189543213438618954321343对文件中匹配到的手机号码(包括86开头)后四位进行变换...
例如文件如下
aa 18954321342 8618954321342
bb 18954321343 8618954321343
对文件中匹配到的手机号码(包括86开头)后四位进行变换,变换规则为:1->2,2->3,0->9,9->0。
变换后的文件文件为
aa 18954322453 8618954322453
bb 18954322454 8618954322454 展开
aa 18954321342 8618954321342
bb 18954321343 8618954321343
对文件中匹配到的手机号码(包括86开头)后四位进行变换,变换规则为:1->2,2->3,0->9,9->0。
变换后的文件文件为
aa 18954322453 8618954322453
bb 18954322454 8618954322454 展开
1个回答
展开全部
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}' 旧文件名 > 新文件名
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询