Dimitris Mintis Asked: 2019-11-10 05:05:06 +0800 CST2019-11-10 05:05:06 +0800 CST 2019-11-10 05:05:06 +0800 CST 从文件中删除特定字符“[” 772 我想从文件中删除一个字符“[”。我试过了 sed -i 's/[//g' 'filename' 但是我收到以下错误 sed:-e 表达式 #1,字符 6:未终止的 `s' 命令 sed 2 个回答 Voted Best Answer Kusalananda 2019-11-10T05:09:07+08:002019-11-10T05:09:07+08:00 是的,这个[字符是特殊的,因为它开始了一个[...]组(一个括号表达式)。 在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此外,在您知道您正在尝试的表达式确实有效之前,不要使用就地编辑,否则您可能必须从备份中恢复您的数据。 jesse_b 2019-11-10T05:08:57+08:002019-11-10T05:08:57+08:00 由于该问题最初被标记为awk并且没有真正的充分理由: awk '{gsub(/\[/, "")}1' file >newfile 这将打印所有[已删除的文件并将其保存到newfile. 使用gawk您可以就地进行编辑: gawk -i inplace '{gsub(/\[/, "")}1' file 我不会使用其中任何一个,除非您还使用awk对文件执行其他操作。
是的,这个
[
字符是特殊的,因为它开始了一个[...]
组(一个括号表达式)。在
sed
OpenBSD 上,您的命令会提供更有用的错误消息:要使用 删除所有
[
字符sed
,请将其转义:或者把它放在一个带括号的表达式中:
或者,使用
tr
,sed
此外,在您知道您正在尝试的表达式确实有效之前,不要使用就地编辑,否则您可能必须从备份中恢复您的数据。由于该问题最初被标记为
awk
并且没有真正的充分理由:这将打印所有
[
已删除的文件并将其保存到newfile
.使用
gawk
您可以就地进行编辑:我不会使用其中任何一个,除非您还使用
awk
对文件执行其他操作。