Слэш и обратная косая черта в sed

Я хочу использовать sed для изменения косой черты в обратную косую черту и косой чертой, т. Е. / -> \/ . Но это не работает. Вот небольшой пример:

 #!/bin/bash TEST=/etc/hallo echo $TEST echo $TEST | sed "s/hallo/bello/g" echo $TEST | sed "s/\//\\\//g" и #!/bin/bash TEST=/etc/hallo echo $TEST echo $TEST | sed "s/hallo/bello/g" echo $TEST | sed "s/\//\\\//g" 

Вывод первых трех строк считается таким же, как предполагалось. Но последний не работает. Зачем? Как исправить последнюю часть?

  • многострочная замена заменяет предыдущий вывод
  • Почему sed не выходит сразу после записи вывода?
  • Используя sed, чтобы заменить только первые два регулярных выражения с разными строками
  • Получить последний набор непустых строк
  • Разбор C-стиля Многострочный комментарий
  • Есть ли простой способ сделать эквивалент `sed ...` заменяя одну и ту же строку несколькими значениями?
  • Извлечение положительных / отрицательных чисел с плавающей запятой из строки
  • Вывод различных строк при сравнении двух файлов
  • 2 Solutions collect form web for “Слэш и обратная косая черта в sed”

    Используйте одиночные кавычки для используемого выражения:

     sed 's/\//\\\//g' 

    В двойных кавычках \ имеет особое значение, поэтому вам нужно обратное слэш:

     sed "s/\//\\\\\//g" 

    Но изменить разделитель проще:

     sed 's=/=\\/=g' sed "s=/=\\\/=g" 

    Пытаться:

     sed 's/\//\\\//g' 

    или с помощью другого разделителя, чтобы предотвратить сбой:

     sed 's,/,\\/,g' 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.