#regex #sed
#регулярное выражение #sed
Вопрос:
Я пытаюсь очистить слова :
{"id":1, "name":Robert}, {"id":2, "name":"Skylar"}, {"id":3, "name":"Ben"}, {"id":4, "name":Anne}
после "name":
всех слов вводятся двойные кавычки, как показано ниже:
{"id":1, "name":"Robert"}, {"id":2, "name":"Skylar"}, {"id":3, "name":"Ben"}, {"id":4, "name":"Anne"}
Как мне очистить это с помощью sed?
Спасибо
Комментарии:
1. Звучит как JSON, не разбирайте JSON с помощью regex!
2. да, это json. Мне нужно очистить его с момента использования mongoexport
3. Лучше было бы исправить инструмент, который выдает недопустимый JSON.
Ответ №1:
sed 's/("name":)([A-Za-z] )/1"2"/g' file
("name":)
(ERE:("name":)
) соответствует"name":
и помещает его в группу захвата 1,([A-Za-z] )
(ERE:([A-Za-z] )
) сопоставляет группу символов, состоящих из букв от A до Z и от a до z, и помещает ее в группу захвата 2,1
и2
расширьте до содержимого групп захвата.
Комментарии:
1. большое вам спасибо! это решено. Также спасибо за логику, лежащую в основе кода 🙂
Ответ №2:
Если ваши данные в d
файле, попробуйте gnu sed:
sed -E 's/("name":s*)"?([^"}] )"?s*}/1"2"}/g' d