2012-05-10 54 views
0

如何將「.nmv-fas」的所有實例更改爲「title」標籤之間的任何內容? 這是可能的蟒蛇或有沒有更好的辦法?python替換爲捕獲組

基本不變:

<html> 
<head> 
<title>.rtpv05-tl</title> 
</head> 
<a href="http://www.youversion.com/bible/gen.1.nmv-fas">http://www.youversion.com/bible/gen.1.nmv-fas</a> 
<a href="http://www.youversion.com/bible/gen.2.nmv-fas">http://www.youversion.com/bible/gen.2.nmv-fas</a> 
<a href="http://www.youversion.com/bible/gen.3.nmv-fas">http://www.youversion.com/bible/gen.3.nmv-fas</a> 
<a href="http://www.youversion.com/bible/gen.4.nmv-fas">http://www.youversion.com/bible/gen.4.nmv-fas</a> 
<a href="http://www.youversion.com/bible/gen.5.nmv-fas">http://www.youversion.com/bible/gen.5.nmv-fas</a> 

這個

<html> 
<head> 
<title>.rtpv05-tl</title> 
</head> 
<a href="http://www.youversion.com/bible/gen.1.rtpv05-tl">http://www.youversion.com/bible/gen.1.rtpv05-tl</a> 
<a href="http://www.youversion.com/bible/gen.2.rtpv05-tl">http://www.youversion.com/bible/gen.2.rtpv05-tl</a> 
<a href="http://www.youversion.com/bible/gen.3.rtpv05-tl">http://www.youversion.com/bible/gen.3.rtpv05-tl</a> 
<a href="http://www.youversion.com/bible/gen.4.rtpv05-tl">http://www.youversion.com/bible/gen.4.rtpv05-tl</a> 
<a href="http://www.youversion.com/bible/gen.5.rtpv05-tl">http://www.youversion.com/bible/gen.5.rtpv05-tl</a> 
+0

我們能有這樣的背景下?在中,你是在編輯磁盤上的html文件還是什麼? – Riking

+0

是它只是一個本地的HTML文件,但我有一堆。批處理中的每個文件都是完全相同的,只是一個不同的標題值 – Blainer

回答

1
awk -v text='.nmv-fas' ' 
    /<title>/ {title=$0; gsub(/<\/?title>/, "", title); replace=1} 
    replace {gsub(text, title)} 
    {print} 
' file > file.tmp && mv file.tmp file 

awk沒有像一個 「就地」 選項的sed的-i

當然,這取決於與<title>標籤在同一行上的標題文本。爲了安全起見,您應該使用HTML解析器來解析HTML。

+0

這是一個bash文件嗎? – Blainer

+0

它看起來只是一個命令,所以是的,它在一個bash文件中。 – Riking

+0

這是一個可以粘貼到命令行的bash命令。 –

0

您可以使用正則表達式將字幕作爲字符串拉出。假設你的HTML是在一些字符串s:

import re 
match = re.compile(r"<title>(.+)</title>",re.I|re.DOTALL) 
title = match.group(1) 

然後只是做一個字符串替換上的字符串s

s.replace(".nmv-fas",title)