У вас есть несколько нечетных косых черт в вашем скрипте Perl. Брекеты должны быть \1
, \2
и т. Д., И многие из остальных должны быть полностью удалены.
perl -p -i -e 's|(#include ")(.*\.hpp)|\1project-head/\2|g' test_file.hpp
В случае, если это не стало очевидным, /
и \
два разных персонажа с радикально различной семантикой.
Прототип для команды подстановки является s/from/to/
, но вы можете использовать и иметь в своем коде, используемом, различные разделители, так что s|from|to|
, без косой черты на всех (единственный оставшийся вперед слэш каталог разделитель между project-head
и оригиналом имя файла).
Обратная косая черта обычно используется как символ эвакуации; например, \.
соответствует литеральному периоду (тогда как неопределенный .
является метасимволом регулярного выражения, который соответствует любому символу, кроме новой строки). Он также имеет особое значение в \1
для возврата к тексту, согласованному с первым подвыражением в скобках (хотя в замещающей части $1
является предпочтительным).
Вы собираетесь использовать косые черты? Похоже, что некоторые должны быть исключены, а другие должны быть обратными косыми чертами. – bloodyKnuckles