shell脚本 将一个含特殊字符的变量,写入文件对应的位置中,使用sed要么写入的字符不正确要么就报错
例如:SSID='~!@#$%^&*[}(/.*\\/'sed-i"s/ssid=.*/ssid=$SSID/"filename...
例如:
SSID='~!@#$%^&*[}(/.*\\/'
sed -i "s/ssid=.*/ssid=$SSID/" filename 展开
SSID='~!@#$%^&*[}(/.*\\/'
sed -i "s/ssid=.*/ssid=$SSID/" filename 展开
1个回答
展开全部
假如SSID变量中没有&这个特殊符号,那么直接用sed是可以满足的
SSID='~!@#$%^*[}(/.*\\/'
sed -i s,ssid=.*,ssid=$SSID,g filename
但是如果有了&符号,放到sed中会作为特殊用途展开,导致保留了原来的匹配字符,写入的内容会不正确。
此时,只能换一种方式,用awk来操作字符串,然后重新写入到文件中,此时需要多一个临时文件
cp filename filename1;
awk '{gsub("^ssid=.*","ssid='$SSID'");print $0}' filename1 >filename ;
rm -f filename1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询