例如文件如下
aa 18954321342 8618954321342
bb 18954321343 8618954321343
对文件中匹配到的手机号码(包括86开头)后四位进行变换,变换规则为:1->2,2->3,0->9,9->0。
变换后的文件文件为
aa 18954322453 8618954322453
bb 18954322454 8618954322454
shell脚本对文本文件中的手机号码脱敏处理
答案:1 悬赏:60
解决时间 2021-11-16 06:48
- 提问者网友:呆萌心雨
- 2021-11-15 08:01
最佳答案
- 二级知识专家网友:绝望伪装
- 2021-11-15 09:28
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}' 旧文件名 > 新文件名
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}' 旧文件名 > 新文件名
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |