为什么它适用于sed -e但不适用于sed -i

时间:2015-02-23 16:55:55

标签: bash sed

我在文件中有这个

echo "[[z[z[[e" > toto_test.txt

我正在尝试这个,事情还可以

sed -e 's,\],,g' -e 's,\[,,g' toto_test.txt

这样做突然间,它不再起作用了

sed -i 's,\],,g' -i 's,\[,,g' toto_test.txt

我有这个错误

sed: impossible to read s,\[,,g: No such file or directory

为什么以及如何克服这个问题?

感谢。

3 个答案:

答案 0 :(得分:3)

sed -i -e 's,\],,g' -e 's,\[,,g' toto_test.txt

-i表示就地修改,

-e表示表达。

一旦理解了这一点,就很容易提供适当的参数。

答案 1 :(得分:2)

您不需要2次更换。只需将其用作:

sed -i.bak 's,[][],,g' toto_test.txt

答案 2 :(得分:1)

据我所知,-i不能重复。它期望为就地编辑的文件提供可选的备份后缀(在OS X上是必需的)。

尝试

sed -i 's,\],,g; s,\[,,g' toto_test.txt

(想把它作为评论,但我似乎不允许这样做,所以我做了回答)