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
),该命令执行自己对字符的解释。当您构建命令时,心理过程是相反的方式:首先为正则表达式添加转义,然后为外壳添加转义。
在一个正则表达式(输入类似命令sed
,grep
等等)反斜线可以通过这样的反斜线转义:\\
也可以使用集表达式[\]
喜欢你用来因为反斜线失去了它的特殊含义。
在 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'