Text-Processing
如何從文件中提取 elapsedTime 屬性值
我希望從文件中提取 elapsedTime 屬性值。
記錄外觀
{"realm":"/test","transactionId":"9e26c614","elapsedTime":17,"elapsedTimeUnits":"MILLISECONDS","_id":"9e26c6asdasd"}
我擁有的文件在 gb 中,我想獲得大於 10000 的值。
我試圖 grep 但由於冒號 grep 不起作用。
grep -wo --color 'elapsedTime' fileName -> this just prints attribute names grep -w --color "elapsedTime" fileName -> this just highlights the attribute.
數據是 JSON 格式,所以最好使用能理解這種格式的解析器。
elapsedTime
這將從文件中的 JSON 中挑選出值/tmp/data
jq .elapsedTime /tmp/data 17
這將只挑選那些大於 10000 的值
jq '.elapsedTime | select(. > 10000)' /tmp/data
如果你真的不能使用
jq
,那麼sed|awk
可以考慮一個構造。但是,這要求每行必須只有一個elapsedTime
標籤和關聯的值。可能還有其他警告,我真的不推薦它,但如果你在這裡絕望,它是,sed -En 's/^.*"elapsedTime":\s*"?([0-9]+).*$/\1/p' /tmp/data | awk '$1 > 10000'
在回答後續問題 ( comment ) 時,要選擇兩個元素,您需要從對像中過濾單個元素,然後顯示所需的元素:
jq -r 'select (.elapsedTime > 10000) | [ .elapsedTime, .transactionId ] | @tsv ' /tmp/data