假如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