我正在尝试编辑文本文件中的单行,方法是删除名称前面不必要的双引号,即“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
答案 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