Команда SED Unix, нужна помощь для преобразования файлов .less в style.css - PullRequest
2 голосов
/ 22 января 2012

Мое намерение состоит в том, чтобы превратить все * .less файлы в style.css

. Я не очень знаком с этим sed, однако я решил это благодаря: http://forums.devshed.com/unix-help-35/unix-find-and-replace-text-within-all-files-within-a-146179.html

for file in $(grep -rl ".less" *.php)
do
    sed -e "s/\/*.less/\/style.css/ig" $file > /tmp/tempfile.tmp
    mv /tmp/tempfile.tmp $file
done

Теперь для этого нужны мои файлы:

css/somefile.less
css/somefileagain.less
css/style.css
index.php

, на который ссылается документ php

<link rel="stylesheet" type="text/css" href="css/somefile.less" />
<link rel="stylesheet" type="text/css" href="css/somefileagain.less" />

Мой результат становится

<link rel="stylesheet" type="text/css" href="css/somefile/style.css" />
<link rel="stylesheet" type="text/css" href="css/somefileagain/style.css" />

Что не являетсячто я хочу.Я хочу, чтобы это был тот же путь, и я думаю, что мне не хватает только * в регулярном выражении, которое не заменяется на sed.Есть ли способ заставить это работать, я пытался сделать так, чтобы это выглядело так: (и я хочу заменить все / из .less на /style.css)

\/*.less

И все же это нене работает, может быть, этот подход не самый лучший, мне нужны некоторые советы, если есть какие-либо флаги, которые также заменят *, спасибо.

Еще одна проблема, которую я получил, - я не могу использовать -r / -R/ - рекурсивный в grep, и я не знаю почему, я использую Debian.Любые советы приветствуются.

/ Маркус

Ответы [ 2 ]

2 голосов
/ 22 января 2012

Вам нужно использовать следующую команду sed внутри вашего цикла for:

sed -i.bak "s~/[^/]*\.less"~/style.css"~g" $file

Нет необходимости хранить вывод sed в отдельном файле и затем возвращать этот временный файл обратно в исходный. Все это можно сделать с помощью опции -i.

1 голос
/ 22 января 2012

Это может работать для вас:

 sed -i 's|[^/]*\.less|style.css|ig' $file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...