В последнее время я должен был удалить новые неотслеженные файлы из своей системы управления версиями. При нахождении в Linux я использую:
hg status -un|xargs rm
И это работает хорошее, но при выполнении его в окнах, hg status
списки соединяют каналом с обратной косой чертой так, чтобы был то, где материал идет не так, как надо. Таким образом я пробую:
hg status -un|sed 's/\\/\//g'
... но я получаю ошибку: sed: выражение № 1-e, символ 8: незавершенная' команда
Затем я пробую некоторый ASCII:
`hg status -un|sed 's/\o134/\o57/g'`
... это получает меня: sed: выражение № 1-e, символ 14: Запаздывающая обратная косая черта
И некоторые сценарии:
hg status -un|sed 's/`echo \`/`echo /`/g'
... это получает меня: sed: выражение № 1-e, символ 19: неизвестная опция к'
Я пробую все последнее любыми другими символами, и я получаю ожидаемый вывод..., таким образом, я полностью потерян. У меня есть cygwin, конечно, и я хочу избегать использования файла (именно это я делал).
Заранее спасибо
герцог!, Вы делаете его неправильно!, можно использовать :
вместо /
для regex:
hg status -un|sed 's:\\:/:g'
*закройте лицо рукой*
Для предотвращения 'Запаздывания обратной косой черты' ошибка, необходимо удостовериться, что не удаляете последнюю обратную косую черту. это может быть сделано путем обеспечения в regex, что другой 'non'backslash символ всегда следует за заменяемым символом. sed должен быть похожим на это...
sed "s:\\([^\]\+\):/\1:g"
.. который примерно переводит как:
найдите обратную косую черту, сопровождаемую по крайней мере 1 символом, который не является обратной косой чертой и заменой наклонной чертой вправо, сопровождаемой другими подобранными символами.
Обратите внимание, что в моем regex (для удара) я не должен был выходить из обратных косых черт, но я должен был выйти из круглых фигурных скобок. '\1' являются обратной ссылкой.
Надежда, которая имеет смысл!