String 使用变量时,sed不能正确替换字符串
目前,我有一个文件,它有一个唯一的模式行String 使用变量时,sed不能正确替换字符串,string,bash,variables,replace,sed,String,Bash,Variables,Replace,Sed,目前,我有一个文件,它有一个唯一的模式行 alphanumeric_ChangeMe_moreAlphaNumeric 实际情况如下: 127.0.0.1 local.com localhost HostType_test_HostNumber2 我试图用另一个命令确定的变量替换字符串测试,该命令使用以下代码作为另一个用户运行 site=$(su admin -c get_local_site | less | sed 's/Local Site Name: //') sed -i -e "
alphanumeric_ChangeMe_moreAlphaNumeric
实际情况如下:
127.0.0.1 local.com localhost HostType_test_HostNumber2
我试图用另一个命令确定的变量替换字符串测试,该命令使用以下代码作为另一个用户运行
site=$(su admin -c get_local_site | less | sed 's/Local Site Name: //')
sed -i -e "s/RecoverPoint_[[:alnum:]]*_RPA/RecoverPoint_$site_RPA/" fakehostfile
我已经测试了各个代码,它们回显了正确的值,但是当我尝试在第二个代码中使用$site变量时,它无法替换该部分
我似乎找不到正确的语法来用存储在变量中的字符串(仅包含字母数字)替换下划线之间的内容
我已经在这里查看了,发现了一些类似的问题,但是解决方案似乎不起作用,因为替换字符串的一部分是一个变量。我尝试将字符串作为三个单独的变量连接起来,但它会替换一些奇怪的东西(可能是因为下划线?)
我在这里错过了什么
有类似问题但不起作用的问题:
按照其他人的建议,不需要
或命令,如果需要仅显示本地站点名称的行,请在Sed中使用-n选项
第二,用大括号括起来,它会解决你的问题
site=$(su admin -c get_local_site | sed -n 's/Local Site Name: //p')
sed -i "s/RecoverPoint_[[:alnum:]]*_RPA/RecoverPoint_${site}_RPA/" fakehostfile
为什么要使用-e
选项-e
,如果我没记错的话,应该只在您执行类似操作时使用:sed's/a/b/'-e'/b/d'
。另外,尝试使用[a-Z0-9]
而不是[:alnum:]
。我想知道为什么bubthegreat使用| less
,而不仅仅是管理…|sed's/…'
?:-)-e
不会受伤,但不需要。祝大家好运。删掉了那些没有被实际使用的-e是因为在我搜索sed的字符串替换方法时建议使用它,但根据建议删除了它。谢谢大家!谢谢-less在任何时候都没有被使用,我忘记了在更多的故障排除之后编辑它。支架工作起来很有魅力,谢谢!