0

我的任务是将一组批处理脚本迁移到 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。

4

2 回答 2

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
于 2011-09-29T12:01:44.507 回答
0

很好地想出了一个解决方法,将它发布在下面,供任何陷入相同情况的人使用。

sed \\fs-bri-01\9732\9732.hfls -i -e "s/LogPath=\"[\:A-Z0-9a-z_\\\/\.\ ]*\"/LogPath=\"ABC\"/g"
于 2011-09-30T13:37:20.283 回答