# 关于mac OSX下的sed

## mac OS X下的sed出错

其实这里只是记录一下自己在用sed修改文件的时候遇到的现象。

网上有很多sed的讲解，还算详细。今天打算改一些网页，打算加一句代码，于是有了如下的语句：

sed -i "s/class=\"look\"/class=\"look\" id=\"lookBigView\"/g" *

然而报错：

sed: -i may not be used with stdin

= 。=|||

The problem is that Mac OS X uses the BSD version of sed, which treats the -i option slightly differently. The GNU version used in Linux takes an optional argument with -i: if present, sed makes a backup file whose name consists of the input file plus the argument. Without an argument, sed simply modifies the input file without saving a backup of the original.

In BSD sed, the argument to -i is required. To avoid making a backup, you need to provide a zero-length argument, e.g. sed -i ” y.tab.c ….

Your command, which simply edits y.tab.c with no backup in Linux, would attempt to save a backup file using ‘y.tab.c’ as an extension. But now, with no other file in the command line, sed thinks you want to edit standard input in-place, something that is not allowed.

终于明白不是我的错了(T 0 T)…Mac OS X是BSD的孩子，那么就跟着父亲来，sed -i 之后需要加参数，表示备份原文件……

于是，代码如下即可：

sed -i "" "s/class=\"look\"/class=\"look\" id=\"lookBigView\"/g" *

• 评论

• 上一篇
• 下一篇