使用sed匹配任何东西和\ s

时间:2012-10-12 19:32:54

标签: linux bash shell sed

我有以下内容:

sed -i "s/SYNFLOOD_RATE  = \"100/s\"/SYNFLOOD_RATE  = \"10\s\"/g"

问题是如何避免此错误?

/bin/sed: -e expression #1, char 28: unknown option to `s'

有没有办法进行外卡匹配并用sed替换?

2 个答案:

答案 0 :(得分:0)

如果您想先grep,请替换:

sed -i '/SYNFLOOD_RATE  = \"100/s/"\/SYNFLOOD_RATE  = \"10\s\"/replacement/g'

但分隔符可以是/以外的任何内容,请参阅:

sed -i '/SYNFLOOD_RATE  = "100/s@"/SYNFLOOD_RATE  = "10\s"@replacement@g'

(此处的分隔符为@

答案 1 :(得分:0)

你有太多的斜杠,4应该有3.使用不同的分隔符; 逗号(,), bang (!),哈希(#),以及(@)处的是常见的的替代品。

sed -i "s,SYNFLOOD_RATE = \"100/s\",SYNFLOOD_RATE = \"10\s\",g"

请注意,原件中的“100 / s”和替换件中的“10s”(无斜线)。要实际插入反斜杠,您需要输入其中的4个:10\\\\s。 shell将每个对减少为一个,然后剩下的double将被sed解释为字面反斜杠。