Regex 过滤掉包含特殊字符bash的字符串的确切部分

Regex 过滤掉包含特殊字符bash的字符串的确切部分,regex,bash,macos,awk,sed,Regex,Bash,Macos,Awk,Sed,我试图在bash(Mac OS 10.12上)中编写一个命令,以过滤掉包含特殊字符的字符串部分: 要删除的字符串部分为: ,MYDOMAIN\sct_DesktopAdmin 我想要的一个例子是: 初始字符串: domain admins,enterprise admins,MYDOMAIN\sct_DesktopAdmin,MYDOMAIN\sct_LocalAdmins 过滤后的最终字符串: domain admins,enterprise admins,MYDOMAIN\sct_Loc

我试图在bash(Mac OS 10.12上)中编写一个命令,以过滤掉包含特殊字符的字符串部分:

要删除的字符串部分为:

,MYDOMAIN\sct_DesktopAdmin
我想要的一个例子是:

初始字符串:

domain admins,enterprise admins,MYDOMAIN\sct_DesktopAdmin,MYDOMAIN\sct_LocalAdmins
过滤后的最终字符串:

domain admins,enterprise admins,MYDOMAIN\sct_LocalAdmins
由于初始字符串因机器而异,因此过滤器必须与此部分完全匹配

我一直在尝试用sed创建一些东西,但到目前为止,只生成了删除所有特殊字符的过滤器,而我试图转义单个特殊字符的尝试没有成功


非常感谢您的帮助。

您可以使用子字符串替换(将
MYDOMAIN\sct\u DesktopAdmin,
替换为空字符串):


编辑:删除第二个
/
,多亏了Toby Speight,使用
printf
而不是
echo
,在末尾添加空格以符合OP Edit

欢迎使用SO,请更清楚地阐述您的问题,它根本不清楚。通过在代码标签中发布简单的示例输入和示例输出,让它变得简单,然后让我们知道。谢谢,这很有效。太好了。由于替换内容是一个空字符串,您可以省略第二个
/
。出于兴趣,有人可以建议使用sed执行此操作的语法吗?@ethamoose using sed:
printf“$str\n”| sed's/MYDOMAIN\\sct\u DesktopAdmin,/'
非常感谢。出于某种原因,我认为事情会比这更复杂。我还以为你也得逃走呢。
str="domain admins,enterprise admins,MYDOMAIN\sct_DesktopAdmin, MYDOMAIN\sct_LocalAdmins"
printf "${str/MYDOMAIN\\sct_DesktopAdmin, }\n"