Добавить двойную цитату в определенном месте в словах с использованием sed

#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