Команда sed не заменяет шаблон, который я хочу? - PullRequest
0 голосов
/ 02 октября 2019

У меня есть файл index.html, в котором есть строки типа

<script src="js/config.js"></script>
<link href="css/colorpicker.min.css" rel="stylesheet" />

IOW, он ссылается на множество файлов *.js и *.css. Я хочу заменить все вхождения *.js и *.css на *.css?rel=1569974280190463223 и *.js?rel=1569974280190463223, где 1569974280190463223 - это значение метки времени, поэтому приведенные выше строки будут выглядеть как

<script src="js/config.js?rel=1569974280190463223"></script>
<link href="css/colorpicker.min.css?rel=1569974280190463223" rel="stylesheet" />

У меня естьсценарий оболочки, который делает это

timestamp="$(($(date +%s%N)-T))"
sed -i -e 's|\.css"|\.css?rel=$timestamp"|g' -e 's|\.js"|\.js?rel=$timestamp"|g' index.html

, но файл index.html в конечном итоге выглядит как

<script src="js/config.js?rel=$timestamp"></script>
<link href="css/colorpicker.min.css?rel=$timestamp" rel="stylesheet" />

Чего мне не хватает в моей строке sed?

1 Ответ

1 голос
/ 02 октября 2019

Вы цитируете переменную оболочки $timestamp в одинарных кавычках. Пожалуйста, попробуйте вместо:

sed -i -e 's|\.css"|\.css?rel='"$timestamp"'"|g' -e 's|\.js"|\.js?rel='"$timestamp"'"|g' index.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...