sed, конвертировать одиночную обратную косую черту в двойную обратную косую черту

У меня есть строка json, у которой есть попурри из дважды сбежавших / одиночно экранированных символов новой строки. Json parser не позволяет своему строковому значению иметь одиночные обратные слэши.

Мне нужно равномерно заставить всех их удвоить побеги

Содержимое выглядит так:

this newline must not be changed ---- \\n this newline must be changed - \n 

Когда я запускаю команду sed,

  sed -i 's/([^\])\n/\\n/g' ~/Desktop/sedTest 

он ничего не заменяет

([^\]) , этот шаблон используется, чтобы не изменять \n который уже имеет еще одну обратную косую черту.

3 Solutions collect form web for “sed, конвертировать одиночную обратную косую черту в двойную обратную косую черту”

пытаться

 sed -i 's,\([^\\]\)\\n,\1\\\\n,' file sed -i 's,\([^\]\)\\n,\1\\\\n,' file 

где

  • \ должен бежать \\\\
  • \( .. \) захват картины
  • \1 справа – это первый захваченный рисунок.
  • вторая форма с одним \ in [^\] согласно предложению @cuonglm.

вам нужно сохранить шаблон, иначе он будет отброшен.

Учитывая ваш пример ввода:

 $ cat /tmp/foo this newline must not be changed ---- \\n this newline must be changed - \n 

Это похоже на то, что вы хотите:

 $ sed -e 's@\([^\]\)\\n@\1\\\\n@' /tmp/foo this newline must not be changed ---- \\n this newline must be changed - \\n 

С \n в LHS вы попытались совместить символ новой строки вместо буквального \n .

Пытаться:

 sed -e 's/\([^\]\)\(\\n\)/\1\\\2/g' file 

или короче с расширенным регулярным выражением:

 sed -E 's/([^\])(\\n)/\1\\\2/g' file 
  • Как искать слово, сохраненное в пространстве удержания с помощью sed?
  • Использование 'sed' для поиска и замены
  • Застрял в разделении символов на строки в моем подходе. Нашел рабочий подход, но не может его понять
  • Выберите строки, начинающиеся с определенных номеров
  • Разделите базовое имя файла, сохраните часть каталога
  • Почему эта команда xargs не работает?
  • Переименовать все пробелы в именах файлов изображений внутри html php-файлов
  • Вставьте новые строки с отсутствующими значениями (NA)
  • Почему sed дает мне ошибку в отношении неиспользуемого `s '?
  • Есть ли более быстрый способ получить этот выходной файл в Linux?
  • сравнить файлы по строкам и создать новое одно bash-программирование
  • Interesting Posts

    изменить размер корневого тома с ошибкой пространства lvextend

    Источник информации – команда who

    Htaccess – сопоставить динамический URL-запрос к статическому файлу

    Невозможно разобрать выходные данные awk

    Выбор правила маршрутизации

    Как я могу перечислить файлы, из которых нет символических ссылок?

    Установленный sqlite3 v3.8, но Mac-терминал по-прежнему запускает старую версию 3.6 по умолчанию

    Почему visudo препятствует другим редакторам?

    Не удалось создать локальное репо в CentOS

    Как скопировать структуру каталогов без удаления символических ссылок?

    хром-браузерные процессы cmdline недоступны в полной форме

    Попытка понять синтаксисы перенаправления bash и их выходы

    Невозможно скопировать или просмотреть файлы с помощью hangul на HFS +

    ubuntu 15.04 опыт работы с проблемами принтера и предложениями для лучших принтеров

    Bash: запустить команду2, если команда1 не выполнена

    Linux и Unix - лучшая ОС в мире.