2017-10-04 99 views
0

我在格式化某些文件时遇到了问题。我想删除[& lnP之间的所有内容,直到file1.trees中的[& R],然后创建一个名为file1_edit.trees的新文件。但我得到的错误 '坏标志替换命令: '/''sed命令:替换命令中的坏标志:'/'

sed -i '' 's/[&lnP/,/[&R]/{//!d;}/g' file1.trees > file1_edit.trees 


    Error --->> sed: 1: "s/[&lnP/,/[&R]/{//!d;}/g": bad flag in substitute command: '/' 
+1

转义方括号,删除rediection,因为你正在进行就地更新。 – SMA

+0

不知道,但也许你意味着'sed的“S/[&LNP \ /,/ [&R]/{\/d;}/g'' – Arount

+0

这不是完全清楚你想要什么来实现 - 你能[编辑]添加(小)样本输入和预期输出?事实上,我不知道你是在尝试在一行中替换一个行还是删掉一行代码。 –

回答

0

假设你要替换 “[&携号转网/,/ [& R]” 和“{// d;} “,你的命令应该是:

sed 's/\[&lnP\/,\/\[&R\]/{\/\/!d;}/g' file1.trees > file1_edit.trees 

你需要转义字符,这会与搜索/替换部分混淆,因为有正斜杠。还可以转义将被视为正则表达式(元字符)中的特殊字符的字符。

同时删除-i标志,它会做的修改就地到文件中。