使用sed,在第一次出现角色之前删除所有内容

时间:2017-05-16 13:38:53

标签: unix sed

我们说我有一条看起来像这样的线

count

如果我想在使用Hello my first name is =Bart and my second is =Homer 的第一个=:之后获取所有内容,该怎么办?

在这个例子中,我想得到结果

sed

我现在正在使用Bart and my second is =Homer ,但我得到sed 's/.*[=:]//'作为结果(最后Homer=之后的所有内容)我想在第一个之后得到所有内容,而不是最后一个:=

1 个答案:

答案 0 :(得分:7)

通常,sed中的量词是贪婪的,这就是为什么你总是匹配最后=的原因。定义第一个=的原因是它之前的所有字符都不是=,所以:

sed 's/[^=]*=//'

您的问题意味着:=是有效标记,在这种情况下

sed 's/[^=:]*[=:]//'