我正在编写一个bash脚本来替换包含空格的行中的模式。 文字看起来像这样 - property name =“abcd”value =“1234”,该值在文件中多次更改,如value = 3456和value = 3689。只有包含name =“abcd”和value =的东西才能被替换。
还有其他一些实例,其中abcd和value是分别调用的,不应该被替换。
我想在替换之前匹配标准name =“abcd”和value。像
这样的东西sed -i '/name="abcd" value=/c\property name="abcd" value="set"' filename
如何解析“abcd”和值之间的空格,以便sed可以将其识别为单个字符串?
输入:
`property name="abcd" value="1234"`
`property name="abcd" value="73845"`
`property name="abcd" value="8276"`
`property name="qwerty" value="1234"`
`blah blah ${abcd} blah`
期望的输出:
`property name="abcd" value="set"`
`property name="abcd" value="set"`
`property name="abcd" value="set"`
`property name="qwerty" value="1234"`
`blah blah ${abcd} blah`
答案 0 :(得分:0)
如果我理解正确,你在单独的行上有name =“blah”value =“blah”,并希望删除\ n
sed ':a;N;$!ba;s/\n/ /g'
执行您想要的操作
答案 1 :(得分:0)
经过一些试验和错误后,我找到了解决方案
`sed -i "/V.prop.*value=/c\ <property name=\\\"V.prop\\\" value=\\\"set\\\"/>" filename`
。*填充同一行中的两个搜索模式。 \\用于转义双引号。
答案 2 :(得分:0)
试试这个:
sed -i -r 's/(property name="abcd" value=)"[0-9]+"/\1"set"/' filename