假设我们有如下键值对:
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49
如何输出多个键值对;假设上述行中的结果和流逝是基于键名而不是位置搜索键的
我想要这样的输出: result=SUCCESS | elapsed=49
感谢你的帮助
发布于 2017-06-27 14:42:58
使用grep -oP
s='ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49'
grep -oP '(result|elapsed)=\S+' <<< "$s"
result=SUCCESS
elapsed=49
或者使用gnu awk
awk -F= -v RS=' \\| |\n' '$1 ~ /^(result|elapsed)$/' <<< "$s"
result=SUCCESS
elapsed=49
发布于 2017-06-27 15:29:34
$ cat file
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49
要获取key=value对,请尝试egrep
$ egrep -o '[a-z]*[A-Z]*[a-z]*=([0-9-]*|[A-Z]*|[a-z]*)' file
ts=2017-06-27-19-59-13-036
result=SUCCESS
requestId=xyz
elapsed=49
https://stackoverflow.com/questions/44783089
复制相似问题