タイムスタンプに関連するファイルのサブセットを取得する

タイムスタンプに関連するファイルのサブセットを取得する

辞書形式のいくつかのjsonファイルがあります。行は次のとおりです

{"a":"1", "b":"2", "c":"3", "time":1334572551435}
{"a":"1", "b":"2", "c":"4", "time":1334575352456}
{"a":"2", "b":"2", "c":"7", "time":1334575335345}
...

時間はUTC形式です。ファイル全体には約3億の固有ラインがあります(おそらく同時に2回程度)。特定の時間(例:1334575352456と間)の回線をどのように選択しますか1334575353456

私は個人的にいくつかのチュートリアルで次のアイデアを得ました。

awk ’$"time" == 1334575352456, $"time" == 1334575353456’ inputfile.json

"time"とにかく、このソリューションは鍵付きのdictsではなく熱用であるようです"time"(実際に$"time"はそうする必要があります$4)。

ベストアンサー1

努力する:

$ awk -F'[:}]' '$(NF-1) >= 1334575352456 && $(NF-1) <= 1334575353456' file
{"a":"1", "b":"2", "c":"4", "time":1334575352456}

-F'[:}]'フィールド区切り記号を:またはに}設定すると、最後から2番目のフィールドにアクセスして時間値にアクセスできます$(NF-1)

出力を保存するには、次のようにします。

$ awk -F'[:}]' '$(NF-1) >= 1334575352456 && $(NF-1) <= 1334575353456' file > output.txt

上記の条件がある場合は、その場所で編集するオプションをgawk 4.1.0使用できます。-i

$ awk -i inplace -F'[:}]' '$(NF-1) >= 1334575352456 && $(NF-1) <= 1334575353456' file

おすすめ記事