【发布时间】:2021-11-25 07:44:43
【问题描述】:
我的任务是在给定输入文件的情况下用星号 (*) 屏蔽每个信用卡号的前 12 位数字,并将屏蔽后的数字打印到输出文件中。
卡号示例:
1111-2222-3333-4444
4444-3333-2222-1111
1234-5678-9101-1171
1234 5678 9101 1121
7347_9834_7598_2834
8973#9858#3475#8734
2356`7843`0527`5340
8734=7583=4895=7007
8763+2430+6257_9406
一切都应该在 shell 脚本中完成
我的解决办法是:
#!/bin/bash
file='cards.txt'
while read data; do
echo $data | sed -r 's/[[:digit:]]{4}/****/;s/[[:digit:]]{4}/****/;s/[[:digit:]]{4}/****/;s/[^0-9,*]+/ /g'
done < $file > cards-masked.txt
关于如何在此任务中使用 sed 有什么更好的想法吗?
【问题讨论】: