Reputation: 10876
Suppose we have key value pairs like:
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49
How can I output multiple key-value pairs; suppose result & elapsed in above line [ search for keys based on keyname not on location]
I wanted output something like: result=SUCCESS | elapsed=49
thanks for help
Upvotes: 1
Views: 2017
Reputation: 1419
$ cat file
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49
To get key=value pairs try 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
Upvotes: 0
Reputation: 786319
Using 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
Or using gnu awk
:
awk -F= -v RS=' \\| |\n' '$1 ~ /^(result|elapsed)$/' <<< "$s"
result=SUCCESS
elapsed=49
Upvotes: 1