linux sed判断开头是否符合,sed忽略以正则表达式开头的行

博客讲述了在shell脚本中使用sed命令替换属性文件中的特定属性值时遇到的问题。当键(KEY)在文件中重复出现时,sed命令会将所有匹配项都替换掉,而作者希望只替换非注释行的匹配项。解决方案是在sed命令中添加条件,只对非注释行执行替换操作,从而避免了错误的替换行为。
摘要由CSDN通过智能技术生成

我试图在

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

/ ^ [^#] /读作“除了一行之外的一个符号”.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值