2010-08-25 37 views
0

刪除意見,我知道,你可以用它來刪除空行TextMate的:從文件

sed /^$/d 

,這刪除評論開始#

sed /^#/d 

,但怎麼給你做刪除所有以//開頭的評論?

回答

2

你只需要用反斜槓「跳過」斜線。

/\/\// 

^操作符將其綁定到行的前面,因此您的示例只會影響從第一列開始的註釋。您可以嘗試在其中添加空格和製表符,然後使用替代運算符|在兩個評論標識符中進行選擇。

/^[ \t]*(\/\/|$)/ 

編輯: 如果你只是想從文件中刪除註釋,那麼你可以這樣做:

/(\/\/|$).*/ 

我不知道什麼是「d」操作者在end,但是上面的表達式應該匹配你模必須轉義括號或者交替操作符('|'字符)

編輯2: 我剛剛意識到使用Mac可能會「炮擊」該命令並使用系統sed。在這種情況下,你可以嘗試在搜索模式周圍加上引號,這樣shell就不會對你的所有魔法字符做任何瘋狂的事情。 :)在這種情況下,'d'表示「刪除模式空間」,所以只需在我給出的最後一個示例之後貼上'd'並且應該設置。

編輯3: 哦,我才意識到,你要小心,如果你不抓住東西引號內(即你不想從#刪除到行尾的,如果它在一個字符串!)。不幸的是,在這種情況下,正則表達式會變得相當複雜一些,除非您只是放棄使用字符串檢查行的註釋。 ...但是你需要使用替代操作來sed而不是search-and-delete-match。 ...你需要加入更多的逃生,這變得瘋狂。我建議尋找一個在線sed助手(有很好的正則表達式測試人員,也許有一個sed?)。

抱歉有點放棄這個項目。這個「問題」是sed可以做的,但在每個階段它都會變得複雜得多,而不是僅僅使用一些Python來完成它。

+0

得到了第一個工作,但第二個給我一個錯誤。我想刪除整個文檔中的所有註釋,無論它們是否在行首。 – tim 2010-08-25 00:58:46

+0

我不知道TextMate正則表達式實現的細節,但是你可以嘗試轉義括號(例如,你必須在默認的Vim中將它們轉義出來,以使它們作爲分組標記工作)。 – 2010-08-25 01:16:21