Я хочу массово изменить некоторые ссылки CSS в более чем 200 HTML-файлов. Большинство файлов - это статический HTML, сгенерированный автоматически. Теперь мне нужно изменить расположение некоторых CSS-файлов. Итак, я использовал этот sed:

sed -s 's/href="*_css/href="css/g' ./12*.htm*

Источник такой:

href="11.2.Lab%20_css/styles.css"
href="10.2.Lab%20_css/styles.css"

Но, управляя седом, ничего не случилось!

Где ошибка?

1 ответ1

2

Это сбивает с толку, но * соответствует произвольной строке в bash , тогда как в регулярных выражениях * повторяет предыдущий шаблон произвольное число раз.

Так что вам нужно .* Вместо * (сопоставить любой символ любое количество раз); Ваша строка указывает произвольное количество двойных кавычек, за которыми следует подчеркивание.

Обратите внимание, что точки в исходных строках не связаны с . в регулярном выражении, которое соответствует любому символу, включая самого себя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .