2013-12-08 2 views
1

У меня есть несколько html-файлов, чтобы объединиться в один файл html, но мне нужно изменить гиперссылки, чтобы избежать того же гиперссылки, когда я их совмещаю.awk/sed имя файла добавить в шаблон соответствия

Имя файла: chapter1.html, chapter1.html и т.д.

Я хочу найти этот тег

<a href="#4"> 

и заменить его с именем файла (chapter1.html), выход должен быть таким (хотите исключить расширение имени файла)

<a href="#chapter14"> 

Как я могу сделать это с помощью awk или sed? благодаря

ответ

1

Нечто подобное с СЭД:

> file='chapter1.html' 
> f="${file%.*}" 
> echo "$f" 
chapter1 
> sed 's/\(href="#\)\([^#]*\)"/\1'"$f"'\2"/' "$file" 

Многократное решение файла:

for file in *.html; do 
    f="${file%.*}" 
    sed -i.bak 's/\(href="#\)\([^#]*\)"/\1'"$f"'\2"/' "$file" 
done 
+0

Я не могу получить это, он не включает в себя имя файла chapter1.html , Я ищу что-то вроде; sed 's/href = "#/$ filename/g' chapter1.html – kuruvi

+0

ok см. обновленный ответ – anubhava

+0

отлично, делает работу очень хорошо. $ f означает имя файла без расширения? Я просто написал sed/\ (href = "# \) \ ([^ #] * \)"/\ 1 '"$ f"' \ 2 "/ 'file.txt, и он работает. Но ваш скрипт присваивает переменную и т. Д., Где вы запускали эти скрипты? извините, но я noob :( – kuruvi

0
for File in *.html 
do 
    sed "s|\(<a href=\"#\)\([[:digit:]]\{1,}"\)|\1${File%.*}\2|g" ${File} >> FinalFile.html 
done 
Смежные вопросы