【问题标题】:using sed, remove everything before the first occurence of a character使用 sed,在字符第一次出现之前删除所有内容
【发布时间】:2020-01-25 00:17:59
【问题描述】:

假设我有一条看起来像这样的线

Hello my first name is =Bart and my second is =Homer

如果我想使用sed 获得第一个=: 之后的所有内容,我该怎么办?

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

Bart and my second is =Homer

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

【问题讨论】:

标签: unix sed


【解决方案1】:

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

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

您的问题暗示:= 都是有效标记,在这种情况下

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

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多