2

我有一个包含信用卡号(16 个字符)的文件,我想找到它们并用“X”替换除前 6 个和后 4 个数字之外的所有内容。

sed -i 's/\([345]\{1\}[0-9]\{3\}\|6011\)\{1\}[ -]\?[0-9]\{4\}[ -]\?[0-9]\{2\}[-]\?[0-9]\{2\}[ -]\?[0-9]\{1,4\}/\XXXXXX/g' foobar.csv

将轻松找到文件中包含的所有信用卡并将其替换为“XXXX”

但我想找到信用卡并仅用“X”替换字符串的第 7-12 个字符,因此该文件将包含像 123456XXXXXX7890 这样被屏蔽的信用。

示例输入行:

jam peanut boat handbag on the shore in Tuesday 4548640040302006 in the morning jimmy

示例输出行:

jam peanut boat handbag on the shore in Tuesday 454864XXXXXX2006 in the morning jimmy
4

1 回答 1

2

尝试使用 GNU sed 来匿名化信用卡号:

sed -i 's/\(\([345]\{1\}[0-9]\{3\}\|6011\)\{1\}[ -]\?[0-9]\{2\}\)[0-9]\{2\}[ -]\?[0-9]\{2\}[-]\?[0-9]\{2\}[ -]\?\([0-9]\{1,4\}\)/\1XXXXXX\3/g' file

输入:

星期二早上在岸上果酱花生船手提包 4548640040302006 吉米
星期二 454864XXXXXX2006 早上在岸边的果酱花生船手提包 jimmy

输出到文件:

星期二 454864XXXXXX2006 早上在岸边的果酱花生船手提包 jimmy
星期二 454864XXXXXX2006 早上在岸边的果酱花生船手提包 jimmy
于 2016-04-17T07:11:15.200 回答