Answers:
如示例结果所示,您可以将反斜杠替换为空格:
sed 's/\\/ /g'
或者您可以按照代码中的显示将其删除:
sed 's/\\//g'
转义反斜杠可能会出现问题,以取消其特殊含义。反斜杠是一个特殊字符,用于在外壳程序和正则表达式中转义。
您首先在外壳程序中处理您在外壳程序的命令行或脚本中键入的命令,该程序解释字符的特殊含义及其转义。然后将结果传递到要执行的命令(如sed
),该命令将对字符进行自己的解释。在构造命令时,思维过程是相反的方式:首先为正则表达式添加转义,然后为shell添加转义。
在一个正则表达式(输入类似命令sed
,grep
等等)反斜线可以通过这样的反斜线转义:\\
也可以使用集表达式[\]
喜欢你用来因为反斜线失去了它的特殊含义。
在shell中(如bash
),您可以通过反斜杠转义反斜杠。所以不要\
写\\
。用双引号引起来的字符串"
会使反斜杠的行为更加复杂<1>,但是双反斜杠仍会产生一个单反斜杠。将字符串括在单引号之间'
可以使每个字符按字面意义处理(除外)'
。
如果要使用双引号,则可以使用以下选项之一:
sed "s/\\\\//g"
- 在shell中转义为\
by \
,然后\
再次在正则表达式中转义所有内容。实际上,在这种情况下,双引号不是必需的,因为每个特殊字符都可以正确转义。
sed "s/[\\]//g"
-在外壳中使用反斜杠转义\
,在正则表达式中使用set [
]
。
sed "s/[\]//g"
-是的,您的示例应在符合POSIX的环境中工作!在双引号之间\
表示自身,除非在双引号的上下文中在特殊字符之前:$`"\
或换行符。在您的情况下,无论是外壳还是外壳sed
都不遵循POSIX标准。
使用单引号,您还可以按原样使用字符串,也可以使用较短的方式:
sed 's/[\]//g'
sed 's/\\//g'
在awk中,我会这样,
$ echo 'NISHA =\455' | awk '{gsub(/\\/," ")}1'
NISHA = 455
sed
(或者可能是从非POSIX shell运行该命令?)。sed
不过,您不需要的tr
就足够了:tr -d '\\' < P
。