【发布时间】:2023-03-21 11:08:01
【问题描述】:
如何将包含制表符 (\t) 的行的一部分替换为 sed、awk 或任何其他?
线
<property name="systemVersionDsvTes" value="xxx"/>
或
\t<property name=\"systemVersionDsvTes\"\t\t\t\tvalue=\"xxx\"/>
应该替换为:
<property name="systemVersionDsvTes" value="yyy"/>
或
\t<property name=\"systemVersionDsvTes\"\t\t\t\tvalue=\"yyy\"/>
值 xxx 可以变化,属性名称前有 一个标签,值前有 四个标签。此名称-值对是 xml 文件中唯一的一对。
我尝试了以下方法:
ACTUAL_VERSION="\t<property name=\"systemVersionDsvTes\"\t\t\t\tvalue=\"4.1.9\"/>"
NEW_VERSION="\t<property name=\"systemVersionDsvTes\"\t\t\t\tvalue=\"4.1.10\"/>"
sed -i -e "s/$ACTUAL_VERSION/$NEW_VERSION/g" buildSIM.xml
这导致了一个错误:sed: -e expression #1, character 65: Unknow option for command `s' (s///?)
表达有什么问题?使用 GNU sed。
【问题讨论】:
标签: regex bash replace sed awk