regex - 使用 sed 和正则表达式删除前缀

标签 regex sed

我正在尝试使用 sed(1) 删除所有出现的 std::memsetstd::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/

相关文章:

javascript - 在第 X 个位置间隔处使用正则表达式替换字符串 (javascript)

linux - 如何一次重命名多个文件

regex - 找到一个作为模式给出的行词另一个行词,awk,perl,sed,grep?

jquery - 如何使用 bash 或 perl 解析 jquery

linux - 使用 shell 脚本用文件中的斜杠替换行

shell - 从丑陋的命令行管道创建整洁的 shell 脚本

regex - 按模式引用 data.table 列

java - 有没有办法缩短包含一堆 boolean 比较的条件?

带密码子的 Python 正则表达式

php - 如何验证这种格式的字符串 : p[1 or more numbers]?