我正在尝试使用 sed(1) 删除所有出现的 std::memset
和 std::memcpy
与 ::memset
和::memcpy
。我尝试了以下模式,但它不起作用 — 我只是得到相同的文本。
$ sed 's/std\(::\(memset|memcpy\)\)/${\1}/g'
基本上,如果后面跟着 ::memset
或 ::memcpy
,我想摆脱 std。
最佳答案
通过为 GNU sed 提供命令行选项 -r
或为 BSD 系统(如 Mac OS)提供 -E
,在脚本中使用扩展的正则表达式。
linux$ sed -r 's/std(::(memset|memcpy))/\1/g' code.cpp
macos$ sed -E 's/std(::(memset|memcpy))/\1/g' code.cpp
关于regex - 使用 sed 和正则表达式删除前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643360/