从文本文件中删除反斜杠

yis*_*sha 13 sed regular-expression

我有

输入:

 NISHA =\455  
Run Code Online (Sandbox Code Playgroud)

输出:

 NISHA = 455
Run Code Online (Sandbox Code Playgroud)

我想\从输出中删除。我尝试使用命令sed "s/[\]//g" P但它不起作用并且它标记了一个错误:

character found after backslash is not meaningful
Run Code Online (Sandbox Code Playgroud)

pab*_*ouk 22

您可以用空格替换反斜杠,如示例结果所示:

sed 's/\\/ /g'
Run Code Online (Sandbox Code Playgroud)

或者您可以在代码中显示时将其删除:

sed 's/\\//g'
Run Code Online (Sandbox Code Playgroud)

特殊的角色

转义反斜杠以取消其特殊含义可能存在问题。反斜杠是一个特殊字符,用于在 shell 和正则表达式中进行转义。

您在 shell 的命令行或脚本中键入的命令首先由 shell 处理,它解释字符的特殊含义及其转义。然后将结果传递给要执行的命令(如sed),该命令执行自己对字符的解释。当您构建命令时,心理过程是相反的方式:首先为正则表达式添加转义,然后为外壳添加转义。

  1. 在一个正则表达式(输入类似命令sedgrep等等)反斜线可以通过这样的反斜线转义:\\也可以使用集表达式[\]喜欢你用来因为反斜线失去了它的特殊含义。

  2. 在 shell(如bash)中,您可以通过反斜杠转义反斜杠。所以而不是\\\. 将字符串括在双引号之间"会使反斜杠行为更加复杂<1>但双反斜杠仍会产生单个反斜杠。将字符串括在单引号之间'会使每个字符都按字面意思处理,除了'.

如果你想使用双引号:,你可以使用下面的一个
sed "s/\\\\//g"逃生-\通过\在shell和逃生每\一次的正则表达式。事实上,在这种情况下双引号不是必需的,因为每个特殊字符都已正确转义。
sed "s/[\\]//g"- 通过反斜杠在 shell 中转义\,在正则表达式中使用 set [ ]
sed "s/[\]//g"- 是的,您的示例应该在符合 POSIX 的环境中工作!双引号之间\表示自身,除非它位于双引号上下文中的特殊字符之前:$`"\或换行符。看起来在您的情况下,shell 或sed不遵循 POSIX 标准。

使用单引号,您还可以使用字符串或更短的方式:
sed 's/[\]//g'
sed 's/\\//g'


jhe*_*ran 6

你必须逃避反斜杠。尝试这个:

sed 's/\\//g'
Run Code Online (Sandbox Code Playgroud)