我正在试图编辑文本文件中的一行,方法是删除名称前面不必要的双引号,即“deleon family de.更改后应该是这样的:deleon family de.
这是我的代码:

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

最佳答案

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

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

你根本不需要grep,也不需要重复替换:
sed 's/"\(THE DELEON FAMILY DE\)/\1/' all_boros.txt

根据需要,您可能需要使用g全局修饰符,这将使替换命令与每行的乘法次数匹配:
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

关于linux - 未终止的“s”命令错误-尝试删除多余的双引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37570990/

10-10 08:38