【问题标题】:find text between 2 strings if not found blank如果未找到空白,则在 2 个字符串之间查找文本
【发布时间】:2014-11-28 18:22:58
【问题描述】:

我正在尝试获取 device_uuid: 和 , 之间的字符串

d

device_uuid:xxx,
ptr
device_uuid:2,

命令:

 sed -e 's/device_uuid:\(.*\),/\1/g' d

输出:

xxx
ptr
2

预期输出:

xxx
          == > blank as there is no pattern
2

【问题讨论】:

    标签: shell sed aix


    【解决方案1】:

    这里需要一些更高级的 sed 命令:

    sed 's/device_uuid:\([^,]*\),/\1/; tEnd; s/.*//; :End' <<DATA
    device_uuid:xxx,
    ptr
    device_uuid:2,
    DATA
    
    xxx
    
    2
    

    如果前面的s 命令进行了替换,并且: 命令定义了标签,则t 命令跳转到标签。

    https://www.gnu.org/software/sed/manual/sed.html#Programming-Commands

    用换行符代替分号可能更容易阅读

    sed '
        s/device_uuid:\([^,]*\),/\1/
        tEnd
        s/.*//
        :End
    '
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      相关资源
      最近更新 更多