这周遇到一点小情况,同事需要将一份excel表格里的身份证和手机号隐去部分。
例如:
[root@localhost ~]# cat ./id
张三 120108199001010023 13466666666
李四 120109189901010034 13800000000
需要做到如下效果:
张三 12010819******0023 134****6666
李四 12010918******0034 138****0000
于是我就在想,万一遇到紧急情况,没有excel的时候,那么我该如何在Linux中实现这个目标呢?
经过研究,可以利用awk这样写:
cat ./id | awk '{print $1" "substr($2,1,8)"******"substr($2,15)" "substr($3,1,3)"****"substr($3,8,4)}'
解释:
print $1:显示第一列,姓名。
substr($2,1,8)"******"substr($2,15):显示第二列从第一个字符起始,8位,显示星号,并显示15字符以后的所有内容(此处不可直接指定位数,否则会导致$3无法显示)。
后面的参见上一条。