awk从模式中提取数据并写回同一文件

时间:2016-04-19 10:21:42

标签: json awk sed

我有一个JSON文件,如下所示

[
{
    "macAddress": "22:00:10:21:ca:54",
    "GeoCoordinate": {
        "latitude": 1.2345,
        "longitude": 123.4567,
        "unit": "DEGREES"
    }
},
{
    "macAddress": "33:00:11:21:ca:54",
    "GeoCoordinate": {
        "latitude": 2.1345544523,
        "longitude": 123.45678,
        "unit": "DEGREES"
    }
},
{
    "macAddress": "44:00:10:21:ca:14",
    "GeoCoordinate": {
        "latitude": 2.1345544523,
        "longitude": 123.45678,
        "unit": "DEGREES"
    }
}
...
]

我想得到以下数据,以便MongoDB可以在带有loc字段的纬度/经度对上使用Geo索引。

[{
    "macAddress": "22:00:10:21:ca:54",
    "GeoCoordinate": {
        "latitude": 1.2345,
        "longitude": 123.4567,
        "unit": "DEGREES"
    },
    "loc": {
       "lon": 123.4567,
       "lat": 1.2345
     }
},
{
    "macAddress": "33:00:11:21:ca:54",
    "GeoCoordinate": {
        "latitude": 2.1345544523,
        "longitude": 123.45678,
        "unit": "DEGREES"
    },
    "loc": {
       "lon": 123.45678,
       "lat": 2.1345544523
     }
},
{
    "macAddress": "44:00:10:21:ca:14",
    "GeoCoordinate": {
        "latitude": 12345678,
        "longitude": 87654321,
        "unit": "DEGREES"
    },
    "loc": {
       "lon": 87654321,
       "lat": 12345678
     }
}
...
]

你可以看到我只是将lat / lon值附加到json对象并反转lon / lat顺序。

如何使用AWK或其他linux命令行来处理上述文件?

1 个答案:

答案 0 :(得分:0)

您可以使用以下ngTrim命令:

jq