Подтвердить что ты не робот

Используйте sed, чтобы заменить все обратные косые черты косой чертой

Я хочу иметь возможность использовать sed для ввода ввода, например:

C:\Windows\Folder\File.txt

Для

C:/Windows/Folder/File.txt
4b9b3361

Ответ 1

sed может выполнять преобразования текста в потоке ввода из файла или из конвейера. Пример:

echo 'C:\foo\bar.xml' | sed 's/\\/\//g'

получает

C:/foo/bar.xml

Ответ 2

только для перевода одного char в другой по всей строке, tr - лучший инструмент:

tr '\\' '/'

Ответ 3

Просто используйте:

sed 's.\\./.g'

Нет смысла использовать / как разделитель в sed. Но если вы действительно хотели:

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

Ответ 4

$ 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', который заменит все обратные косые черты косой чертой.

Ответ 5

Если ваш текст находится в переменной 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.

Ответ 6

Это может сработать для вас:

sed 'y/\\/\//'

Ответ 7

Для меня это заменяет одну обратную косую черту косой чертой.

sed -e "s/\\\\/\//"  file.txt

Ответ 8

U может попробовать sed: \:/: g '.

Первым "\" является вставка ввода, второй "\" будет тем, который вы хотите заменить.

Итак, это: "Первый слэш "\" вторая косая черта "\" ":" "\" , чтобы вставить ввод "/" в качестве новой косой черты, которая будет представлена ":" g '

\/

И Что это. Он будет работать

Ответ 9

Мне пришлось использовать [\\] или [/], чтобы сделать эту работу, FYI.

awk '!/[\\]/' file > temp && mv temp file

и

awk '!/[/]/' file > temp && mv temp file

Я использовал awk для удаления зазоров и косых черт из списка.