Я пытаюсь удалить JavaScript между двумя шаблонами. Шаблоны:
/* React App Start */
И
/* React App End */
Я могу успешно удалить JavaScript следующим образом:
sed -i -e '//\* React App Start \*//,//\* React App End \*//d' views/layouts/index.html
Однако это также удаляет шаблоны, которые мне не нужны. Поэтому я попробовал следующее, но он удаляет только часть JavaScript:
sed -i -e '//\* React App Start \*//,//\* React App End \*//{//!d;}' views/layouts/index.hml
Кто-нибудь может помочь, пожалуйста? Я на Mac.
@Cyrus Я посмотрел, что на этой странице не повезло sed -n -e '//\* React App Start \*//{' -e 'p' -e ':a' -e 'N' -e '//\* React App End \*//!ba' -e 's/.*\n//' -e '}' -e 'p' views/layouts/index.html
Итак, он запускается, когда я устанавливаю gsed. Однако он по-прежнему не удаляет следующее, что находится между двумя шаблонами. `функция синхронизации анимации: ${0}; количество итераций анимации: бесконечно; задержка анимации: 200 мс; } ),ea.rippleVisible,la,550,
Возможно, вам больше повезет, используя ed
, чем sed
для этого (при условии, что Mac поставляется с ним); поскольку он с самого начала был разработан для редактирования файлов, а не потоков текста, таких как sed
, он позволяет вам делать такие вещи, как поиск назад по адресу, что здесь удобно:
printf "%s\n" '/React App Start/+1,/React App End/-1d' w | ed -s views/layouts/index.html
удалит файлы в диапазоне от одной строки после строки, соответствующей первому шаблону, до одной строки перед строкой, соответствующей второму шаблону, а затем запишет измененный файл обратно на диск.
Это работает для обычного текста, но не для удаления JavaScript. Любая идея о том, как адаптировать его, чтобы убрать весь JavaScript?
@RobH Javascript в html-файле представляет собой обычный текст.
Это удаляет только половину Javascript:/
Чтобы заставить это работать, мне пришлось ввести новую строку перед последним шаблоном.
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, такие как цитаты или документация, чтобы другие могли подтвердить правильность вашего ответа. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.
Группировка команд...
sed -iE '//\* React App Start \*//,//\* React App End \*//{
/[/][*] React App [StarEnd]+ [*][/]/n;
d;
}' views/layouts/index.html
См.: удаление линий между двумя шаблонами (не включительно) с помощью sed