Каков правильный способ вставки \ u с помощью sed?

Я пытаюсь найти строку, которая содержит \u и добавляет что-то к ней.

Например,

 $ echo \user | sed 's/\us/\\usX/' - 

правильно производит

 \usXer 

Однако, если у меня есть содержимое в файле и введите его в следующий код

 $ sed -i 's/\us/\\usX/' test 

я получил

 \\usXer 

Тогда можно подумать, что проблема заключается в сбежавшей обратной косой чертой, и она не нужна. Но если удалять его, это только вызывает замену \u (в верхнем регистре) команды s sed .

Таким образом, каков правильный способ вставки \u последовательности с помощью sed ?

One Solution collect form web for “Каков правильный способ вставки \ u с помощью sed?”

Прежде всего, sed 's/\us/…/' не ищет \us ; он ищет us . Чтобы выполнить поиск \us , вам нужно использовать sed 's/\\us/…/' .

Если вы ищете строку со специальными символами в ней, а затем добавляете что-то к ней, полезно использовать символ & для ссылки на строку, которую вы искали. Так, например,

 $ sed -i 's/\\us/&X/' test 

В общем случае & (иногда называемое «Find What») представляет ту часть пространства шаблонов, которая соответствует вашей строке поиска. Это более полезно, когда строка поиска является непростым регулярным выражением; например,

 $ echo You say goodbye and I say hello. | sed 's/[gh][az]*[eo]/"&"/g' You say "goodbye" and I say "hello". 

Точно так же, как 's/\\usmthing/…/' – это способ поиска \usmthing , вам нужно использовать 's/…/\\usmthing/' для вставки \usmthing . Например,

  $ echo Boo |  sed 's / oo / \ ulish /'
 BLish ← Обратите внимание, что \ ul интерпретируется как означающий «положить « l » в верхний регистр ».

 $ echo Boo |  sed 's / oo / \\ ulish /'
 B \ ulish 
  • Oneliner для определения переменных верблюда
  • Обратное совпадение в sed, замените противоположное тому, что было найдено
  • sed / awk / grep найти строку между точкой с запятой
  • Удаление пробелов из полей в файле с разделителями с запятой с использованием сценария оболочки
  • Заменить часть текстового файла с помощью скрипта bash
  • sed заменяет только несколько регулярных выражений букв
  • Извлечь часть значения из пары ключ-значение, разделенной двоеточием в Linux
  • Получить имя и использование файловой системы с помощью `df -h`
  • Удаление непечатаемых символов с помощью POSIX sed
  • Как искать и заменять строки, соответствующие списку заметок для нескольких файлов
  • Как найти и заменить только в нескольких столбцах?
  • Linux и Unix - лучшая ОС в мире.