Linux

ubuntu 上的非貪婪 grep 命令?

  • May 3, 2010

我正在建構一個腳本,它會從我們的模板系統中過濾掉所有可翻譯的內容。我面臨的問題是 2 個可翻譯文本在一條線上的情況。

這些是模板文件中的 2 行範例,它們都包含一個或多個可翻譯

<img src="/captcha/generate.jpg" alt="[#Captcha#]" />
<span>[#Velden met een * zijn verplicht in te vullen#]</span> <button type="submit" name="frm_submit" class="right">[#Verzend#]

當我放開以下正則表達式時

egrep "\[#(.*)#\]" . -Rohis

我得到這個輸出

[#Captcha#]"
[#Velden met een * zijn verplicht in te vullen#]</span> <button type="submit" name="frm_submit" class="right">[#Verzend#]

雖然所需的輸出是

[#Captcha#]
[#Velden met een * zijn verplicht in te vullen#]
[#Verzend#]

同意凱爾。但是,在這種情況下,您可以這樣做:egrep "\[#([^]])*)#\]" . -Rohis得到您正在尋找的東西。

[^]]*匹配非]字元,所以它會在第一個命中]時停止。

嘗試使用正則表達式解析 HTML 會很痛苦,只是不要這樣做。Jeff 在Parsing Html The Cthulhu Way中寫道。“但我只想______”,沒關係,認真的,別做。花點時間學習一些旨在解析 html 的東西。

我個人會為此推荐一個 Perl 模組(例如HTML::TreeBuilder),但是您知道哪些語言?其他選項是:tidy+ xmlstarlet xmlgawk xpath xml2。

如果您只想要文本中的“渲染”html,您可以使用連結之類的東西:links -dump www.google.com

引用自:https://serverfault.com/questions/109586