【发布时间】:2014-03-30 03:15:04
【问题描述】:
好的,我知道我已经提到过类似的帖子,但不符合我遇到的确切问题。
供参考:replace a unknown string between two known strings with sed
我有一个包含 software=setting:value,setting2:value,setting3:value 等的文件...
我的第一次尝试是将上述参考与 sed -i "/software/ s/setting:.*,/setting:,/" $fileName
但是,通配符引用该行的最后一个逗号,而不是紧跟匹配项的逗号。
我目前的工作是: sed -i "/software/ s/setting:[^,]*,/setting:,/" $fileName 但这限制了具有包含逗号包裹在引号内的潜在值的能力,等等......我知道这是一个不太可能的情况,但我想要一个理想的解决方案,其中值可以包含它想要的任何字符,并且只是在“设置:”和值后面的逗号之间进行字符串替换那个特定的设置。
感谢任何帮助。提前致谢!
【问题讨论】:
-
所以你想匹配所有内容,直到第一个逗号不在带引号的字符串中?引号可以出现在哪里?报价在哪里开始和结束?只是在值的开头和结尾还是在中间?可以多次开始和结束吗?