2013-10-15 79 views
1

我確定這已寫在某處之前...我試圖用sed替換一個字符串,其格式爲較大的字符串:如何使用sed替換較大的字符串中的字符串

EFF=<some text>; 

該字符串始終以'EFF ='開頭並以';'結尾,

我試過以下,但不知何故,它刪除遠遠超過其應該(而不是刪除這個特定的部分,它刪除,直到最後的';'在較大的字符串中),所以我不知道我是否可以在我的命令更具體:

sed -i 's/EFF=.*;//g' 

如大串的:

<some text>;EFF=<some text>;<some text>;<some text>; 

的 「一些文本」 是不相同

回答

4

*是貪婪的,它匹配最長的字符串。您需要排除比賽中的;

sed -i 's/EFF=[^;]*;//g' filename 
+0

這樣做的伎倆......請問在這種情況下,[^;]意味着什麼? – user2726449

+0

請前往regular-expressions.info瞭解正則表達式。 – Barmar

+0

'[^;]'是指每個不是';'的字符; – Jotne

相關問題