我试图在
shell脚本中使用sed替换属性文件中的属性;下面列出的命令完全正常
sed "s!${KEY}=.*!${KEY}=${NEWVAL}!" infile > outfile
问题 – 这个人也会在评论中替换匹配的“KEY”.
示例文件:
###########
#ws.clients=http://abc123.com
ws.clients=http://123.com
###########
脚本:
#!/bin/ksh
KEY="ws.clients"
NEWVAL="http://abcd.com"
sed "s!${KEY}=.*!${KEY}=${NEWVAL}!" infile > outfile
输出:
###########
#ws.clients=http://abcd.com
ws.clients=http://abcd.com
###########
我尝试了几种方法但是没有成功地从“#”……建议开始逃避这条线路?
您可以为替换表达式添加条件:
sed "/^[^#]/ s!${KEY}=.*!${KEY}=${NEWVAL}!" infile > outfile
/ ^ [^#] /读作“除了一行之外的一个符号”.