ファイルから elapsedTime プロパティ値を抽出する方法

ファイルから 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. 

ベストアンサー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

おすすめ記事