未终止的's'命令错误 - 试图删除额外的双引号

时间:2016-06-01 14:03:28

标签: linux bash

我正在尝试编辑文本文件中的单行,方法是删除名称前面不必要的双引号,即“THE DELEON FAMILY DE。更改之后它应该是这样的:DELEON FAMILY DE。< / p>

这是我的代码:

grep 'THE DELEON FAMILY DE' all_boros.txt | sed 's/"THE DELEON FAMILY DE/THE DELEON FAMILY DE'

这是我得到的错误:

sed: -e expression #1, char 44: unterminated `s' command

2 个答案:

答案 0 :(得分:3)

您缺少替换命令中的最后一个/

s/"THE DELEON FAMILY DE/THE DELEON FAMILY DE/
#                                           ^ Here

根本不需要grep,你不需要重复替换:

sed 's/"\(THE DELEON FAMILY DE\)/\1/' all_boros.txt

根据您的需要,您可能希望使用g lobal修饰符,这将使替换命令匹配每行的乘法次数:

sed 's/"\(THE DELEON FAMILY DE\)/\1/g' all_boros.txt

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

sed -i.bak 's/"\(THE DELEON FAMILY DE\)/\1/g' all_boros.txt
#   ^ this will make a backup called all_boros.txt.bak while modifying the
#     original file

答案 1 :(得分:2)

无需grep和替换,Sed照顾它。

sed -i 's/"THE DELEON FAMILY DE/THE DELEON FAMILY DE/g' all_boros.txt