假设我们有键值对,如:
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49
如何输出多个键值对;假设结果&在上面的行中经过[根据键名不在位置搜索键]
我想输出类似于: 结果=成功|经过= 49
感谢您的帮助
答案 0 :(得分:1)
使用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
答案 1 :(得分:0)
$ 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