Já que você já está usando o GNU sed
( -i
extension):
sed -ri ':1
s/(^|[^-0-9])[0-9]{3}-[0-9]{2}-[0-9]{4}([^-0-9]|$)/XXX-XX-XXXX/g
s/(^|[^-0-9])[0-9]{9}([^-0-9]|$)/XXXXXXXXX/g
t1' your-file
(com BSD sed
, substitua -ri
por -Ei ''
)
Isso é converter os ddddddddd
e ddd-dd-dddd
, desde que não sejam precedidos nem seguidos por um dígito decimal ou hífen.
Com perl
(do qual o% GNUsed
emprestou esse -i
):
perl -pi -e 's{(?<![\d-])(\d{3}-\d\d-\d{4}|\d{9})(?![\d-])}{
$& =~ s/\d/X/gr}eg' your-file