我有一个包含以下几行的文本文件。
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-3333
为xxx-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'