文字列行から整数を抽出する

文字列行から整数を抽出する

テキストファイルから数字を抽出するのに問題があります。デフォルトでは次のようになります(すべて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

おすすめ記事