Ответы:
Вы можете заменить обратную косую черту на пробел, как показано в примере с результатом:
sed 's/\\/ /g'
или вы можете удалить его, как показано в коде:
sed 's/\\//g'
Возможны проблемы с выходом из обратной косой черты, чтобы отменить его особое значение. Обратная косая черта - это специальный символ, используемый для экранирования как в оболочке, так и в регулярных выражениях.
Команда, которую вы вводите в командной строке оболочки или сценарии, сначала обрабатывается оболочкой, которая интерпретирует особое значение символов и их экранирование. Затем результат передается исполняемой команде (например sed), которая выполняет свою собственную интерпретацию символов. Когда вы создаете команду, ментальная процедура работает противоположным образом: сначала добавьте экранирование для регулярного выражения, а затем добавьте экранирование для оболочки.
В регулярном выражении (ввод в команды, подобные sedи grepт. Д.) Обратная косая черта может быть экранирована обратной косой чертой, например, так: \\вы также можете использовать выражение set, [\]как вы использовали, потому что обратная косая черта теряет свое особое значение.
В оболочке (вроде bash) вы можете избежать обратной косой черты. Так что вместо того, чтобы \писать \\. Заключение строки в двойные кавычки "усложняет поведение обратной косой черты <1>, но двойная обратная косая черта по-прежнему будет вызывать одну обратную косую черту. Заключение строки в одинарные кавычки 'делает буквально каждый символ, кроме '.
Если вы хотите использовать двойные кавычки , вы можете использовать одно из следующих:
sed "s/\\\\//g"- Escape \by \в оболочке и \снова экранируйте каждый в регулярном выражении. На самом деле двойные кавычки не нужны в этом случае, потому что каждый специальный символ правильно экранирован.
sed "s/[\\]//g"- Побег в оболочке с помощью обратной косой черты \и в регулярном выражении использовать набор [ ].
sed "s/[\]//g"- Да, ваш пример должен работать в POSIX-совместимой среде! Между двойными кавычками \представлен сам, если он не предшествует специальному символу в контексте двойных кавычек: $`"\или новой строки. Похоже, что в вашем случае либо оболочка, либо sedне соответствует стандарту POSIX.
С одинарными кавычками вы также можете использовать строку как вы использовали или более короткий путь:
sed 's/[\]//g'
sed 's/\\//g'
В awk я бы так сделал,
$ echo 'NISHA =\455' | awk '{gsub(/\\/," ")}1'
NISHA = 455
sed 's/\\//'
Поместите \перед, \как вы делаете с большинством специальных символов.
gфлаг по неизвестной причине. Это меняет поведение команды, но такое изменение не было запрошено в вопросе. В противном случае ваш ответ не принесет ничего нового по сравнению с предыдущими ответами.
sed(или, возможно, вы запускаете эту команду из оболочки не-POSIX?). Вам не нужно,sedхотя,trдостаточноtr -d '\\' < P.