2017-06-27 48 views
1

假設我們有這樣的鍵值對:grep命令行中的多個值,輸出多值僅

ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49 

我怎麼能輸出多個鍵值對;假設結果&在上面行[搜索基於鍵名而不是位置的鍵]

我想輸出類似於: result = SUCCESS |經過49例

感謝您的幫助

回答

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 
+0

grep命令中的\ K \ S部分是什麼? –

+0

我想輸出兩個鍵和值 – Deepak

+1

我更新了我的答案。 '\ S'表示匹配任何非空白字符。 – anubhava

0
$ cat file 
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49 

要獲得鍵值對嘗試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