Слэш и обратная косая черта в 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 для редактирования заголовка с содержимым другого файла
  • Недостаточно памяти при использовании sed с многострочными выражениями на гигантском файле
  • как вставить обратную косую черту перед символом #?
  • Как разбирать JSON с помощью сценариев оболочки в Linux?
  • Sed: Заменить N первых вхождений персонажа
  • Что значит . совпадение?
  • Извлечение жетонов из строки текста
  • 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' 
    Linux и Unix - лучшая ОС в мире.