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

时间:2018-08-10 11:20:51

标签: 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_LocalAdmins

由于不同机器的初始字符串会有所不同,因此过滤器仅与该部分完全匹配非常重要。

我一直在尝试使用sed创建内容,但到目前为止,仅生成可以删除所有特殊字符的过滤器,而我对转义各个特殊字符的尝试均无效。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用子字符串替换(用空字符串替换MYDOMAIN\sct_DesktopAdmin,):

str="domain admins,enterprise admins,MYDOMAIN\sct_DesktopAdmin, MYDOMAIN\sct_LocalAdmins"
printf "${str/MYDOMAIN\\sct_DesktopAdmin, }\n"

编辑:感谢Toby Speight删除第二个/,使用printf代替echo,并在末尾添加空格以符合OP编辑要求