2012-05-17 4 views
0

У меня есть список из 300+ файлов, которые нужно отредактировать, поэтому я подумал, что команда sed в тандеме с find и exec может мне помочь.sed - что случилось с моей заменой?

Прежде чем что-то делать неправильно (например, перезаписать файлы, которые я не буду изменять, или что-то в этом роде), я решил использовать sed и вывести его результат в bash вместо локальной подстановки.

Строка Я Searchin' для это: <tr><td class="button" style=" background:#040404; color:#eee9dc; font-size: 23px; padding:5px 0; text-align:center;"><a href="../Z2/C24357-0/hhcm-LASTMINUTES.html" style=" text-decoration:none; cursor:pointer; color:#eee9dc">Offerte & LastMinute</a></td></tr>

, и я только хочу, чтобы заменить эту часть <a href="../Z2/C24357-0/hhcm-LASTMINUTES.html с <a href="../../../special_offers.php?lang=it"

Поскольку я нуб о regex, я буду смотреть на что web page, которые приводят меня в аргумент регулярного выражения достойным образом.

Теперь я попробовать что-то вроде этого (на одном файле, только для взглянуть на выход в «безопасный» способ)

sed s/\<a.*LAST.*html\" 
     /\<a href="\.\.\/\.\.\/\.\.\/special_offers\.php\?lang=en"/ 
     C25030-9_3/hhcm-Solo_per_due.html 

и я получаю эту ошибку: sed: -e expression #1, char 20: unterminated s' command как то неправильные выражения sed, но я не знаю, находится ли ошибка в части replacement или где-то еще.

Спасибо, что нашли время и силы.

С.

Редактировать

Благодаря ответам, я решил его делаешь что-то в этом

sed 's/<a.*LAST.*html\"/\<a href="..\/..\/..\/special_offers.php?lang=en"/' C25030-9_3/hhcm-Solo_per_due.html 

ответ

1

Во-первых, кажется, что вам нужно поместить все выражение патч в (s/.../.../) в одинарных кавычек, во-вторых, вы забыли / в конце (см. Править), и в-третьих, не забывайте, что замена будет работают только в том случае, если целая строка шаблона находится в одной строке.

EDIT: Более подробная информация о s команде (see here, например): это s/old/new/ и возможные флаги после последнего /. Ваша команда выглядит как s/something/somethingelse/somethingelse, у нее больше, чем нужно, я думаю.

+0

Для одной линии, да, спасибо, но я просто делаю это так, чтобы сделать ее более читаемой для s.o. пользователи. Где я его пропустил? Я вижу это после '' 'char – DonCallisto

+0

+1 для предложения одной квоты – DonCallisto

+0

@DonCallisto см. Мое редактирование. –

Смежные вопросы