我正在尝试在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
答案 0 :(得分:2)
这里需要一些更高级的sed命令:
sed 's/device_uuid:\([^,]*\),/\1/; tEnd; s/.*//; :End' <<DATA
device_uuid:xxx,
ptr
device_uuid:2,
DATA
xxx
2
如果先前的t
命令进行了替换,s
命令会跳转到标签,:
命令会定义标签。
https://www.gnu.org/software/sed/manual/sed.html#Programming-Commands
使用换行符而不是分号可能更容易阅读
sed '
s/device_uuid:\([^,]*\),/\1/
tEnd
s/.*//
:End
'