Я хочу иметь возможность использовать 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 для удаления зазоров и косых черт из списка.