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 
  • как подражать «замените abb a» на sed?
  • Как выполнить инструкцию IF из результата выполненной команды
  • Лучше, чем `tee | разрезать | ... | paste`
  • Выберите строки, начинающиеся с определенных номеров
  • Преобразование таблицы csv в HTML
  • Как создать список, сгенерированный md5deep в алфавитном порядке относительных путей?
  • Есть ли надежный инструмент командной строки для обработки CSV-файлов?
  • Как удалить часть строки
  • Найти и заменить слова в текстовом файле рекурсивно
  • Как использовать регулярное выражение с AWK для замены строки?
  • Grep текст, соответствующий шаблону
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.