如何用Sed命令屏蔽信用卡号前12位?含空格处理方案
使用sed屏蔽信用卡号前12位的解决方案
没问题,这事儿用sed就能轻松搞定!咱们先理清楚需求:每个信用卡号是4组4位数字,用空格分隔,要把前3组(也就是前12位)替换成****,只保留最后一组数字。
核心命令
直接用这条sed命令就能实现:
sed -E 's/([0-9]{4} ){3}/**** **** **** /g'
命令拆解
咱们来一步步看为什么这么写:
-E:启用扩展正则表达式,这样不用给括号、大括号加转义符,表达式更清爽。([0-9]{4} ){3}:这个正则用来匹配**连续3组“4个数字+空格”**的内容,正好对应卡号的前12位(包含分隔空格)。**** **** ****:替换成和原格式一致的3组****加空格,保证输出格式和输入对齐。g:全局替换标记,确保一行里的所有信用卡号都会被处理(比如你示例里的两个卡号)。
测试示例
输入内容:
1234 5678 9101 1234 2999 5178 9101 2234
运行命令后,输出就是:
**** **** **** 1234 **** **** **** 2234
兼容老版本sed
如果你的sed版本不支持-E(比如一些BSD系统的默认sed),可以用基本正则表达式,记得转义括号和大括号:
sed 's/\([0-9]\{4\} \)\{3\}/**** **** **** /g'
处理文件
如果要处理一个保存了卡号的文件,直接把文件名加在命令后面就行:
sed -E 's/([0-9]{4} ){3}/**** **** **** /g' card_numbers.txt
内容的提问来源于stack exchange,提问作者Akshay Singh
相关产品推荐
相关产品推荐

