Использование SED с новыми строками

#json #sed

Вопрос:

У меня есть несколько файлов JSON, в которых мне нужно добавить a , после a } и перед новой строкой. Текущий формат файла выглядит следующим образом:

 "some_text"}
{"version":"1.0",
 

Это моя текущая команда:

sed -i '.json' 's/}n/},n/g' file .

Регулярное выражение работает при выполнении поиска и замены внутри файла, но я не могу понять командную строку, которая мне нужна для массового редактирования

Ответ №1:

Это может сработать для вас (GNU sed):

 sed -i 's/}$/amp;,/' file
 

Sed ограничивает строки, которые он представляет в пространстве шаблонов, новыми строками, поэтому конец строки с использованием привязки $ представляет позицию перед новой строкой и, следовательно, представляет регулярное }$ выражение }n .

Другой способ-использовать:

 sed -zi 's/}n/},n/g' file
 

Это помещает файл в память, и глобальная подстановка заменяет совпадение.