Пакетный файл с использованием sed в Windows - неожиданное добавление вместо замены - PullRequest
0 голосов
/ 29 сентября 2011

Мне было поручено перенести группу пакетных сценариев в 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.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2011

Хорошо обдумал, как разместить его ниже для тех, кто застрял в той же ситуации.

sed \\fs-bri-01\9732\9732.hfls -i -e "s/LogPath=\"[\:A-Z0-9a-z_\\\/\.\ ]*\"/LogPath=\"ABC\"/g"
0 голосов
/ 29 сентября 2011

Возможно, проблема в 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
...