我的任务是将一组批处理脚本迁移到Windows 7(从XP),并且在使用sed进行替换时遇到了一些问题。我需要做的是找到LogPath,双引号内的任何内容都应该用ABC替换(仅用于测试 - 实际上是UNC路径)。
然而,我遇到了两个奇怪的问题:
以下是该脚本的相关行:
sed \\fs-bri-01\9732\9732.hfls -i -e s,LogPath="*.",LogPath="ABC",g
此脚本适用于Windows XP,但不适用于Windows 7.
答案 0 :(得分:0)
问题可能来自UNC路径:
pushd \\fs-bri-01\9732
sed 9732.fls -i -e s,LogPath="*.",LogPath="ABC",g
popd
但也许问题来自引号字符和sed获取其argv数组的方式。然后你可以尝试:
sed -i -e "s/LogPath=\".*\"/LogPath=\"ABC\"/g" \\fs-bri-01\9732\9732.hfls
答案 1 :(得分:0)
很好地计算了一个工作,将其发布在下面,适用于陷入同样情况的人。
sed \\fs-bri-01\9732\9732.hfls -i -e "s/LogPath=\"[\:A-Z0-9a-z_\\\/\.\ ]*\"/LogPath=\"ABC\"/g"