我有以下XML标记
<ListBox
x:Name="main_menu" HorizontalAlignment="Left" Margin="8,8,0,8" Width="160"
ItemTemplate="{DynamicResource MetroListBoxItemTemplate}"
ItemContainerStyle="{DynamicResource MetroListBoxItemStyle}"
ItemsSource="{Binding Menu}">
</ListBox>
在用&#39; sed&#39;替换之后它应该如下所示
<fileset dir="${shared.resource.dir}/worklightconsole/lib" includes="worklight-jee-library.jar"/>
我应该替换“worklightconsole”这个词。与&#39; app&#39;
我尝试了以下&#39; sed命令&#39;还有很少的其他选择,但我没有成功,同时它没有抛出任何错误
<fileset dir="${shared.resource.dir}/app/lib" includes="worklight-jee-library.jar"/>
请帮我解决问题
答案 0 :(得分:1)
您的模式似乎存在一些问题,主要是您可能定义捕获组的方式,特别是第1组:
sed 's|\(resource.dir}/\)worklightconsole\(/lib"\)|\1app\2|g
我相信你想要逃避捕获组中的()
括号(至少我通常需要这样做)。并且您的第一个捕获组错过了原始字符串中的}
。最后一个问题是你有[^/]
你可能在第一个捕获组中使用/
后退了 - 它不清楚,虽然我从你的模式中删除了它工作
<强>结果强>:
<fileset dir="${shared.resource.dir}/app/lib" includes="worklight-jee-library.jar"/>
编辑:使用-E
选项可以避免转义括号()
:
sed -E 's|(resource.dir}/)worklightconsole(/lib")|\1app\2|g