如何使用 sed 将数字替换为字母

如何使用 sed 将数字替换为字母

我有一个包含以下几行的文本文件。

Maynard G. Krebs , ss #111−22−3333, the goofy but lovable beatnik in The Many
Loves of Dobie Gillis. None of the show's episodes ever specified Gilligan's

如何使用 sed 将数字替换#111-22-3333xxx-xx-xxxx

这就是我的 sed 脚本中的内容: s/([0-9]{3}-[0-9]{2}-[0-9]{4})/xxx-xx-xxxx/g
我运行它sed -f redact.sed redact.txt

答案1

  • 删除括号,否则 Sed 将尝试匹配文件中的括号。

  • {n}是扩展正则表达式的一部分。为 Sed 提供-E标志以启用它们 ( sed -Ef redact.sed redact.txt),或转义每个大括号。

  • 请注意,您的文件包含某种破折号 (0xE28892):它不是旧的 0x2D ASCII -,因此您也需要将其放入 Sed 表达式中。

    sed 's/[0-9]\{3\}−[0-9]\{2\}−[0-9]\{4\}/xxx-xx-xxxx/g'
    sed -E 's/[0-9]{3}−[0-9]{2}−[0-9]{4}/xxx-xx-xxxx/g'
    

相关内容