目前為止,我們只執行了簡單的字串替換。雖然這很方便,但是我們還可以匹配規則表示式。例如,以下 sed 命令將匹配從 '<' 開始、到 '>' 結束、並且在其中包含任意數量字元的短語。下例將刪除該短語(用空字串替換):
$ sed -e 's/<.*>//g' myfile.html
這是要從檔案除去 html 標記的第乙個很好的 sed 指令碼嘗試,但是由於規則表示式的特有規則,它不會很好地工作。原因何在?
當 sed 試圖在行中匹配規則表示式時,它要在行中查詢最長的匹配。在我的前一篇 sed 文章中,這不成問題,因為我們使用的是 'd' 和 'p' 命令,這些命令總要刪除或列印整行。但是,在使用 's///' 命令時,確實有很大不同,因為規則表示式匹配的整個部分將被目標字串替換,或者,在本例中,被刪除。這意味著,上例將把下行:
thisis whatimeant.
變成:
meant.
我們要的不是這個,而是:
this is what i meant.
幸運的是,有一種簡便方法來糾正該問題。我們不輸入「'<' 字元後面跟有一些字元並以 '>' 字元結束」的規則表示式,而只需輸入乙個「'<' 字元後面跟有任意數量非 '>' 字元並以 '>' 字元結束」的規則表示式。這將與最短、而不是最長的可能性匹配。
新命令如下:
$ sed -e 's/<[^>]*>//g' myfile.html
在上例中,'[^>]' 指定「非 '>'」字元,其後的 '*' 完成該表示式以表示「零或多個非 '>' 字元」。對幾個 html 檔案測試該命令,將它們管道輸出到 "more",然後仔細檢視其結果。
程式對話的可能性
假設程式a和程式b都採用同一種語言。這種語言支援用 片段來打補丁。來達到a,b不斷修改對方的程式的目的。a,b通過不斷的學習網路上的動態資源,達到不斷進化的目的。a,b可繁殖。通過提取自己的特徵碼來作為自己的dna,結合對方的dna,利用仿dna配對的演算法,可能還要進行變異 即進行隨機變換 不是固...
Decode Ways 不同的解碼可能性
a 1 b 2 z 26 given an encoded message containing digits,determine the total number of ways to decode it.for example,given encoded message 12 it could ...
erlang 程序獨佔的可能性
erlang 程序獨佔的可能性 erlang 的程序排程靠的是reduction,reduction的呼叫一般是在某乙個原子或者基礎指令呼叫完後才會呼叫,如果減少至0,則程序切換。所以程序並不是在任意指令下切換。那也就是說如果有某個命令沒有呼叫到reduction,這樣也就不會程序切換,就會出現程序...