Несколько команд сценария

Поскольку вы, похоже, используете GNU sed ( -i extension) уже:

sed -ri ':1
         s/(^|[^-0-9])[0-9]{3}-[0-9]{2}-[0-9]{4}([^-0-9]|$)/\1XXX-XX-XXXX\2/g
         s/(^|[^-0-9])[0-9]{9}([^-0-9]|$)/\1XXXXXXXXX\2/g
         t1' your-file

(на BSD sed , замените -ri с -Ei '' )

Это преобразование ddddddddd и ddd-dd-dddd при условии, что они не предшествуют и не следуют десятичная цифра или дефис.

С perl (из которого GNU sed заимствовал этот -i ):

perl -pi -e 's{(?<![\d-])(\d{3}-\d\d-\d{4}|\d{9})(?![\d-])}{
  $& =~ s/\d/X/gr}eg' your-file
1
29.01.2016, 22:05
0 ответов

Теги

Похожие вопросы