Я хочу иметь возможность использовать sed для ввода ввода, например:
C:\Windows\Folder\File.txt
Для
C:/Windows/Folder/File.txt
Я хочу иметь возможность использовать sed для ввода ввода, например:
C:\Windows\Folder\File.txt
Для
C:/Windows/Folder/File.txt
sed может выполнять преобразования текста в потоке ввода из файла или из конвейера. Пример:
echo 'C:\foo\bar.xml' | sed 's/\\/\//g'
получает
C:/foo/bar.xml
только для перевода одного char в другой по всей строке, tr - лучший инструмент:
tr '\\' '/'
Просто используйте:
sed 's.\\./.g'
Нет смысла использовать / как разделитель в sed. Но если вы действительно хотели:
sed 's/\\/\//g'
$ echo "C:\Windows\Folder\File.txt" | sed -e 's/\\/\//g'
C:/Windows/Folder/File.txt
Команда sed в этом случае 's/OLD_TEXT/NEW_TEXT/g'.
Ведущий 'просто говорит ему искать OLD_TEXT и заменить его на NEW_TEXT.
Конечный "g" просто говорит, чтобы заменить все вхождения на заданную строку, а не только первую.
И, конечно, вам нужно отделить "s", "g", "старый" и "новый" друг от друга. Здесь вы должны использовать косые черты в качестве разделителей.
Для вашего случая OLD_TEXT == '\' и NEW_TEXT == '/'. Но вы не можете просто набирать косые черты и ожидать, что вещи будут работать , как ожидалось, буквально, используя их в качестве разделителей одновременно. В общем, косые черты весьма специфичны и должны обрабатываться как таковые. Они должны быть "экранированы" (т.е. Предшествуют) обратным слэшем.
Итак, для вас, OLD_TEXT == '\\' и NEW_TEXT == '\/'. Поместите их в парадигму 's/OLD_TEXT/NEW_TEXT/g', которую вы получите
's/\\/\//g'. Это читается как
's/\\/\//g', а после экранов -
's/\///g', который заменит все обратные косые черты косой чертой.
Если ваш текст находится в переменной Bash, то Замена параметра ${var//\\//} может заменить подстроки:
$ p='C:\foo\bar.xml'
$ printf '%s\n' "$p"
C:\foo\bar.xml
$ printf '%s\n' "${p//\\//}"
C:/foo/bar.xml
Это может быть более компактным и четким, чем фильтрация с помощью команды, например tr или sed.
Это может сработать для вас:
sed 'y/\\/\//'
Для меня это заменяет одну обратную косую черту косой чертой.
sed -e "s/\\\\/\//" file.txt
U может попробовать sed: \:/: g '.
Первым "\" является вставка ввода, второй "\" будет тем, который вы хотите заменить.
Итак, это: "Первый слэш "\" вторая косая черта "\" ":" "\" , чтобы вставить ввод "/" в качестве новой косой черты, которая будет представлена ":" g '
\/
И Что это. Он будет работать
Мне пришлось использовать [\\] или [/], чтобы сделать эту работу, FYI.
awk '!/[\\]/' file > temp && mv temp file
и
awk '!/[/]/' file > temp && mv temp file
Я использовал awk для удаления зазоров и косых черт из списка.