从文件中删除特定字符“[”

从文件中删除特定字符“[”

我想从文件中删除字符“[”。我试过

 sed -i 's/[//g' 'filename'

但是我收到以下错误

sed:-e表达式#1,字符6:未终止的“s”命令

答案1

是的,该[字符很特殊,因为它开始一个[...]组(括号内的表达式)。

sedOpenBSD 上,您的命令会给出更有用的错误消息:

$ sed 's/[//g'
sed: 1: "s/[//g": unbalanced brackets ([])

要使用 删除所有[字符sed,请将其转义:

sed -i 's/\[//g' file

或者将其放在括号表达式内:

sed -i 's/[[]//g' file

或者,使用tr,

tr -d '[' <file >file.new

另外,在您知道您正在尝试的表达式实际上有效之前,请勿使用就地编辑sed,否则您可能必须从备份中恢复数据。

答案2

由于该问题最初被标记为awk且 没有真正充分的理由:

awk '{gsub(/\[/, "")}1' file >newfile

这将打印所有删除的文件[并将其保存到newfile.

使用gawk您可以就地进行编辑:

gawk -i inplace '{gsub(/\[/, "")}1' file

awk不过,除非您还用于对文件执行其他操作,否则我不会使用其中任何一个。

相关内容