2013-05-26 97 views
0

我試圖用sed來刪除文件放在方括號內的所有文本實例,所以我的代碼是:Android的殼sed的麻煩

sed -r 's|\[[^\]]*\]||g' file 

然而,這似乎並沒有拿起所有用方括號括起來的文字實例。特別是,它似乎失敗:

[/a] 
[/b] 
[span style "blah" blah] 

等等,但它用方括號包圍明文工作。據我所知道的,正則表達式應該是尋找方括號包圍,是不是一],那麼究竟什麼是錯的任何字符?

+0

這是如何與Android的? –

+0

錯過了這個。這是因爲我正在爲使用Busybox的Android Shell編寫腳本。這些公用事業並不相同。 – Firnagzen

回答

1

我想這正則表達式,並沒有刪除括號中的任何文本。

當我刪除了第二個「\」,所以正則表達式是

sed -r 's|\[[^]]*\]||g' 

它在所有情況下完美地工作。

我想它在Mac和Linux上。 Android運行Linux,所以它也可能在那裏工作。


一句話的解釋:掃描儀是特殊的地方,涉及逃生。如果「]」字符是在掃描集的最前面的一個,你不需要逃避它。如果不是在掃描集的最前面的一個,你無法逃避它。

+0

這很有用,謝謝。但我只是用逃脫的方法再次測試了sed,它正如我所說的那樣工作:它將方括號中的_some_文本刪除,但不是全部。任何想法爲什麼? – Firnagzen