姓名和身份证以下面格式存放id.txt文件里,目的是把姓名的第二个字和身份证的生日信息用X代替
张三 123456202202061234
李四五 234567202202061234
诸葛六七 234567202202061234
脚本1,用for循环
#!/bin/bash
id=`cat ./id.txt`
for i in $id;
do
if [ ${#i} -eq 18 ];then #获取变量长度,身份证长度为18
date=`echo ${i:6:8}` #获取生日信息,6是启始位置,8为截取字符长度
echo ${i//$date/XXXXXXXX} #把生日信息替换成并导出到文档
fi
if [ ${#i} -le 4 ];then #获取姓名长度,是长为4个字
date=`echo ${i:1:1}`
echo ${i//$date/X}
fi
done
输出结果
张X
123456XXXXXXXX1234
李X五
234567XXXXXXXX1234
诸X六七
234567XXXXXXXX1234
脚本2,while read,笨方法
#!/bin/bash
cat ./id.txt|while read a b #a和b分别代表姓名列和身份证列
do
name1=`echo ${a:1:1}`
name=`echo ${a//$name1/X}`
id1=`echo ${b:6:8}`
id=`echo ${b//$id1/XXXXXXXX}`
echo $name $id
done
脚本3,xargs -n方法
#!/bin/bash
cat ./id.txt|while read a b
do
name=`echo ${a:1:1}`
id=`echo ${b:6:8}`
{ echo ${a//$name/X}; echo ${b//$id/XXXXXXXX}; }|xargs -n 2 #xargs -n 2可让输出结果为2列的格式
done
脚本2和脚本3输出结果都一样,为
张X 123456XXXXXXXX1234
李X五 234567XXXXXXXX1234
诸X六七 234567XXXXXXXX1234
sq62bdba8ee7296 1 月前
sq62bdba8ee7296 1 月前