【发布时间】:2019-11-17 00:07:17
【问题描述】:
请提出一个最佳解决方案来替换 bash 脚本中的以下字符串。
input_string= 'cn=xxxxx\, yyyyy (abc-ns),cn=users,dc=box,dc=com'
to_be_replaced_str= 'cn=aaaa\, bbbbb (abc),cn=users,dc=box,dc=com'
sed "s#'${input_str}'#'${replace_str}'#g"
但是我没有得到任何结果,并且它没有随着期望的变化而改变。
input_string= 'cn=xxxxx\, yyyyy (abc-ns),cn=users,dc=box,dc=com'
to_be_replaced_str= 'cn=aaaa\, bbbbb (abc),cn=users,dc=box,dc=com'
sed "s#'${input_str}'#'${replace_str}'#g"
input_string= 'cn=xxxxx\, yyyyy (abc-ns),cn=users,dc=box,dc=com'
to_be_replaced_str= 'cn=aaaa\, bbbbb (abc),cn=users,dc=box,dc=com'
sed "s#'${input_str}'#'${replace_str}'#g"
空白输出。
【问题讨论】:
-
Bash Guide 将为您提供学习 Bash 的良好起点。
-
明显问题:不能在赋值中
=后面加空格,变量名不匹配。可能的问题:sed命令中的单引号和/或字符串中的转义可能不需要,但如果不知道输入和预期输出是什么,我们就无法判断。 -
input_string='cn=xxxxx\, yyyyy (abc-ns),cn=users,dc=box,dc=com' to_be_replaced_str='cn=aaaa\, bbbbb (abc),cn= users,dc=box,dc=com' ,即使这也不起作用 sed "s#'${input_str}'#'${replace_str}'#g"
-
@Tkumar 究竟文件的原始内容和所需的替换内容是什么?单引号实际上是文件的一部分吗?反斜杠呢?您应该使用确切的文件内容(代码格式)编辑您的问题。不要将信息放在评论中,它们也不处理代码格式。
-
嗨 GD,是的,单引号是文件的一部分,我们在这里所做的是提取 LDAP 用户定义并创建用其他用户连接字符串替换它,我已经给了你确切的内容.