目前我的文件具有带
模式的唯一行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 variable replacement does not seem to work Sed replacement not working when using variables
答案 0 :(得分:1)
正如其他人所建议的那样,不需要less
命令,如果只需要显示Local Site Name
行,请在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