2011-08-06 48 views
0

我需要一個Perl/shell腳本,將文本替換所有文件中的HTML代碼如下所有OCCURENCES:替換HTML文本與常規

<? test_routine ?> 

HTML代碼

<tr> 
    <td> 
    <label>testlabel</label> 
    </td> 
</tr> 

這HTML代碼可以用任意數目的空格,即

<tr><td><label>testlabel</label></td></tr> 

也是一個有效的搜索條件發生(即忽略所有的空格)

任何人都可以讓我知道我可以使用perl/shell腳本來解決這個問題。謝謝。

+0

的可能的複製[多行搜索用Perl替換(http://stackoverflow.com/questions/1030787/multiline -search-replace-with-perl) – tripleee

回答

1

這裏是perl的一條線,將你需要使用的是什麼正則表達式:

$html =~ s/<\s*tr\s*>\s*<\s*td\s*>\s*<\s*label\s*>\s*testlabel\s*<\s*\/label\s*>\s*<\s*\/td\s*>\s*<\s*\/tr\s*>/<? test_routine ?>/gi 
+1

爲了處理跨越多行的匹配,將其包裝在一次讀取整個文件的腳本中,並向替換中添加/ m修飾符。 perl -0777 -pe's%from%to%mg' – tripleee

+0

實際上,在這種情況下不需要'/ m'修飾符。不過,你是對的,整行文件必須在運行這行之前讀入'$ html'變量。 – EdoDodo

+0

我打印$ html,我可以看到替換的文本。感謝那。但是如何將這個寫回文件?我試着打開outfile,「> test.html」; print(outfile「$ html」); – progster