Слэш и обратная косая черта в 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" 

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

  • Автозаполнение в соответствии с возможными целями
  • Убить родителя процесса дочерних труб
  • Предполагаемое использование ctrl + T в bash?
  • Найти второе появление строки из конца файла
  • $ (tail) в переменную удаления \ n
  • Sed / awk / perl: порядок реверсирования значений, разделенных запятыми, сохранение другого текста
  • Как отключить набор -o vi?
  • Как использовать оператор case для обработки нескольких возвращаемых значений
  • Печать строки после или до регулярного выражения в Bash
  • Как перенаправить вывод любой команды?
  • Как удалить весь набор файлов в случайном порядке?
  • Переместить каждый файл, который не является каталогом
  • 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 - лучшая ОС в мире.