2013-10-15 44 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

相关问题