从文本文件中删除反斜杠

从文本文件中删除反斜杠

我有

输入:

 NISHA =\455  

输出:

 NISHA = 455

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

character found after backslash is not meaningful

答案1

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

sed 's/\\/ /g'

或者您可以按照代码所示将其删除:

sed 's/\\//g'

特殊字符

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

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

  1. 在正则表达式中(输入诸如 等命令sedgrep反斜杠可以通过反斜杠转义,如下所示:\\并且您也可以像您使用的那样使用集合表达式,[\]因为反斜杠失去了其特殊含义。

  2. 在一个壳里(比如bash)你可以通过反斜杠转义反斜杠。所以不要\\\.将字符串括在双引号之间"会使反斜杠行为更加复杂<1>但双反斜杠仍会产生单反斜杠。将字符串括在单引号之间'可以按字面意思处理除 之外的每个字符'

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

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

答案2

你必须转义反斜杠。尝试这个:

sed 's/\\//g'

答案3

如果您不需要 sed 解决方案,请尝试使用以下命令:

$ echo "NISHA =\455"| awk -F'\' '{print $1 $2}'
$ echo "NISHA =\455"| tr '\\' ' '
$ echo "NISHA =\455"| tr -d '\\'
$ echo "NISHA =\455"| cut -c 1-7,9-11

答案4

sed 's/\\//'

像处理大多数特殊字符一样在\前面放置一个。\

相关内容