1
假設我們有這樣的鍵值對:grep命令行中的多個值,輸出多值僅
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49
我怎麼能輸出多個鍵值對;假設結果&在上面行[搜索基於鍵名而不是位置的鍵]
我想輸出類似於: result = SUCCESS |經過49例
感謝您的幫助
假設我們有這樣的鍵值對:grep命令行中的多個值,輸出多值僅
ts=2017-06-27-19-59-13-036 | result=SUCCESS | requestId=xyz | elapsed=49
我怎麼能輸出多個鍵值對;假設結果&在上面行[搜索基於鍵名而不是位置的鍵]
我想輸出類似於: result = SUCCESS |經過49例
感謝您的幫助
使用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
$ 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
grep命令中的\ K \ S部分是什麼? –
我想輸出兩個鍵和值 – Deepak
我更新了我的答案。 '\ S'表示匹配任何非空白字符。 – anubhava