在sed中指定特定目录中的文件

时间:2014-07-17 13:57:23

标签: sed

我在Mac上使用Sed。我试图在不在目录中的文件上执行简单的字符串替换。我这样做:

sed -i 's/old/new/' /Users/A/file

它表示无效的命令代码A.

我需要做什么?

2 个答案:

答案 0 :(得分:1)

OSX / BSD -i中的sed选项与GNU / Linux版本略有不同,因为它需要提供备份扩展,即使它& #39;是一个空字符串(这意味着不会进行备份)。 "无效的命令代码"出现错误消息,因为s/old/new被视为备份扩展,/Users/A/file被视为脚本(其中A被视为无效的命令名称)。所以它需要像:

sed -i '' 's/old/new/' /Users/A/file

答案 1 :(得分:0)

如果你有perl:

perl -p -i -e 's/old/new/' /Users/A/file

sed中的-i不是操作系统的标准(不是POSIX标准)。这应该每次都有效:

cp /Users/A/file /Users/A/file.sed
cat /Users/A/file.sed | sed 's/old/new' > /Users/A/file