Как заменить двойную обратную косую черту в тексте JSON? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть этот файл json:

{
    "module": {
        "data": {
            "orderInfo_203759231000": {
                "fields": {
                    "createdAt": "Dipesan pada\\r\\n 17 Mei 2018",
                    "tradeOrderId": 203759231000
                }
            },
            "orderInfo_203759231000": {
                "fields": {
                    "createdAt": "Dipesan pada\\r\\n 22 Mei 2018",
                    "tradeOrderId": 203759231000
                }
            },
            "orderInfo_203759231000": {
                "fields": {
                    "createdAt": "Dipesan pada\\r\\n 22 Mei 2018",
                    "tradeOrderId": 203759231000
                }
            },
            "orderInfo_203759231000": {
                "fields": {
                    "createdAt": "Dipesan pada\\r\\n 22 Mei 2018",
                    "tradeOrderId": 203759231000
                }
            },
            "orderInfo_203759231000": {
                "fields": {
                    "createdAt": "Dipesan pada\\r\\n 22 Mei 2018",
                    "tradeOrderId": 203759231000
                }
            }
        }
    }
}

, и я хочу удалить Dipesan pada\\r\\n вот что я пробовал:

sed 's/Dipesan pada \\\\r\\\\n//g' file.json

Но это не работает,Я хочу, чтобы конечный результат был только такими датами:

"createdAt": "17 Mei 2018",
"createdAt": "22 Mei 2018",
"createdAt": "22 Mei 2018",
etc...

Как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Используя jq с оператором обновления и sub filter, вы можете сделать это, как показано ниже.Косые черты необходимо экранировать дважды, чтобы они работали

jq '(.module.data[].fields.createdAt)|=(sub("Dipesan pada\\\\r\\\\n ";""))' input.json

Как проверено на jq-play .Это проверено на входе JSON с ключами, измененными во избежание дублирования.

0 голосов
/ 22 мая 2018

Ваши обратные слеши в порядке, поздравляем!Проблема с размещением одного надоедливого пробела:

sed 's/Dipesan pada \\\\r\\\\n//g' file.json # bad
sed 's/Dipesan pada\\\\r\\\\n //g' file.json # good
...