ファイルから 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.
答え1
データはJSON形式なので、この形式を理解するパーサーを使用するのが最善です。
elapsedTime
これにより、ファイルのJSONから値が選択されます。/tmp/data
jq .elapsedTime /tmp/data
17
これにより、10000より大きい値のみが選択されます。
jq '.elapsedTime | select(. > 10000)' /tmp/data
実際に機能しない場合は、ビルドすることを検討してくださいjq
。ただし、これを行うには、各行に1つのラベルと関連する値のみがsed|awk
必要です。elapsedTime
他の注意事項がある可能性があり、あまりお勧めできませんが、ここで切迫感を感じたらそれがすべてです。
sed -En 's/^.*"elapsedTime":\s*"?([0-9]+).*$/\1/p' /tmp/data |
awk '$1 > 10000'
後続の質問に答えてください(コメント)、2つの要素を選択するには、オブジェクト内の個々の要素をフィルタリングしてから、必要な要素を表示する必要があります。
jq -r 'select (.elapsedTime > 10000) | [ .elapsedTime, .transactionId ] | @tsv ' /tmp/data