我想用'100.45.9.147'
替换IP $(cat apiServer.txt)
。
非就地更新有效,但是当我尝试使用sed的就地更新时,出现错误:-
$ sed“ s /'100.45.9.147'/ \ $(cat apiServer.txt)/ g” checkNTP.sh
echo -e "\n"
apiServer=$(cat apiServer.txt)
usertoken=$(cat tokenfile.txt)
curl -k -H "Authorization: Bearer ${usertoken}" -H 'Content-Type: application/json' "https://${apiServer}/configapi/v1/SystemSettingsNTP"
echo -e "\n\n"
$ sed -i“ s /'100.45.9.147'/ \ $(cat apiServer.txt)/ g” checkNTP.sh
sed: 1: "checkNTP.sh": command c expects \ followed by text
这是checkNTP.sh的内容
echo -e "\n"
apiServer='100.45.9.147'
usertoken=$(cat tokenfile.txt)
curl -k -H "Authorization: Bearer ${usertoken}" -H 'Content-Type: application/json' "https://${apiServer}/configapi/SystemSettingsNTP"
echo -e "\n\n"
答案 0 :(得分:0)
在-i ''
开关下面使用可解决这种情况:
sed -i '' "s/'10.45.9.147'/\\$\\(cat apiServer.txt\\)/g" fileName.txt
答案 1 :(得分:0)
这可能对您有用(GNU sed):
sed 's/'\''100\.45\.9\.147'\''/$(cat apiServer.txt)/' file
最好通过从外壳引号中戳出单引号,这样可以使除元字符以外的所有其他字符都可以表示自己,并且元字符可以用普通引号引起来,例如.
必须加引号\.
,否则仅代表一个字符。
如果您想让shell变量再次替换文本,请在shell中戳一个孔,并将变量双引号引起来,以留出可能的空白。还请记住,如果变量包含元字符,则应事先将其引号,否则替换命令可能会导致sed语法错误。通常,当变量中包含与替换定界符冲突的字符时,通常是/