因工作需要,搞了个身份证15位转18位的SHELL ,
awk '{if (length($1)==18 ) { print $1 } else if ( length($1)==15) { printf("%s19%s%s\n",substr($1,1,6),substr($1,7,9) , substr("10X98765432",(substr($1,1,1)*7
+substr($1,2,1)*9+substr($1,3,1)*10+substr($1,4,1)*5+substr($1,5,1)*8+substr($1,6,1)*4+1*2+9*1+substr($1,7,1)*6+substr($1,8,1)*3+substr($1,9,1)*7+substr($1,10,1
)*9+substr($1,11,1)*10+substr($1,12,1)*5+substr($1,13,1)*8+substr($1,14,1)*4+substr($1,15,1)*2)%11+1,1) ) } else {print "非法证件号码"} }' aa
其中文件aa 包含一列,为15位证件号码。 |