选择未知的选项' s'

时间:2014-10-13 22:26:17

标签: bash unix sed

我正在尝试编写一个简短的bash脚本,用于从文件中删除CSS注释(因此任何文本包括和介于/ *和* /之间),但是它需要忽略具有字符串“not”或“NOT”的行“在里面。

这是我到目前为止所得到的:

sed '\_(not|NOT)_!s_/\*_,_\*/_g' $1

但是,在运行脚本时,它将返回错误:

sed: -e expression #1, char 22: unknown option to `s'

我的第一个假设是使用正斜杠导致问题,尽管转义字符,所以我使用下划线作为分隔符。但是,这还没有解决我的问题。

任何建议将不胜感激!感谢。

2 个答案:

答案 0 :(得分:0)

我不确定这个部分到底了!但是s的语法是s_old_new_,可选地后跟一些选项。

你在那里有一个额外的_。或者你可能意味着s_/\*.*/\*__g用任何东西替换评论。

建议:用小块构建它。例如,尝试剥离字母序列,测试它,然后添加功能以跳过“不”行,然后将其删除评论。

答案 1 :(得分:0)

我用这个解决了这个问题:

sed -e '/not /I!s/\/\*.*\*\///g' $1

找出你可以使用的不区分大小写的标志,它会选择“not”和“NOT”。我还想出了找到所有注释并替换为空的正确语法。

感谢大家的帮助。