【发布时间】: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
【问题讨论】:
我正在尝试获取 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
【问题讨论】:
这里需要一些更高级的 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
'
【讨论】: