awk / sed filename添加到模式匹配

时间:2013-12-08 17:12:10

标签: regex bash sed awk

我有多个html文件要合并到一个html文件中,但我需要修改超链接以避免在我将它们组合时使用相同的超链接。

文件名:chapter1.html,chapter1.html等。

我想找到这个标签

 <a href="#4">

并用文件名(chapter1.html)替换它,输出必须是这样的(想要排除文件名的扩展名)

<a href="#chapter14">

我怎么能用awk或sed做到这一点?感谢

2 个答案:

答案 0 :(得分:1)

sed:

这样的事情
> 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

答案 1 :(得分:0)

for File in *.html
 do
   sed "s|\(<a href=\"#\)\([[:digit:]]\{1,}"\)|\1${File%.*}\2|g" ${File} >> FinalFile.html
 done