テキストファイルから数字を抽出するのに問題があります。デフォルトでは次のようになります(すべて1行に表示されます。読みやすくするためにここでは区切ります)。
[{"id":1,"width":720,"height":480,"longitude":20.104258199768,"timestamp":1510690197540,"frame_content":"some other informations...},
{"id":2,"width":720,"height":480,"longitude":20.104258199768,"timestamp":1510690197552,"frame_content":"some other informations...},
{"id":3,"width":720,"height":480,"longitude":20.104258199768,"timestamp":1510690197556,"frame_content":"some other informations...},
{"id":4,"width":720,"height":480,"longitude":20.104258199768,"timestamp":1510690197558,"frame_content":"some other informations...},
and so on.....]
私がやりたいことは、タイムスタンプタグの後のすべての値を抽出することです。問題は私です。ファイルは1行だけで構成されます。これにより少しトリッキーになり、変更できないようです。インターネット上で解決策を見つけてsed
コマンドを試しましたが、これまでは成功しませんでした。grep
この問題のお手伝いをいただきありがとうございます:)
ありがとうございます!
ベストアンサー1
ファイルが正しい形式のJSONファイルであると仮定すると、JSONパーサーを使用して解析する必要があります。
使用jq
ファイルのJSONパーサー:
$ jq '.[] | .timestamp' filename.json
1510690197540
1510690197552
1510690197556
1510690197558
この式は、.[] | .timestamp
配列内のすべてのオブジェクトに対して暗黙的なループを作成し、timestamp
各オブジェクトから値を抽出します。
次のように書くこともできます。
$ jq '.[].timestamp' file.json
無関係:
id
最大値を持つオブジェクトを見つけるにはtimestamp
:
$ jq 'max_by(.timestamp).id' file.json
4
JSONファイルをきれいに印刷するには:
$ jq . file.json