使用sed和regex删除前缀

Jak*_*les 2 regex sed

我正在尝试使用sed(1)删除所有出现的std::memsetstd::memcpywith ::memset::memcpy.我尝试了以下模式,但它不起作用 - 我只是得到相同的文本.

$ sed 's/std\(::\(memset|memcpy\)\)/${\1}/g'
Run Code Online (Sandbox Code Playgroud)

基本上我想摆脱标准,如果跟着::memset::memcpy.

kev*_*kev 6

通过-r为GNU sed或-EMac OS等BSD系统提供命令行选项,在脚本中使用扩展的正则表达式.

linux$ sed -r 's/std(::(memset|memcpy))/\1/g' code.cpp

macos$ sed -E 's/std(::(memset|memcpy))/\1/g' code.cpp
Run Code Online (Sandbox Code Playgroud)