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

在sed中指定特定目录中的文件,sed,Sed,我在Mac上使用Sed。我正在尝试对不在目录中的文件执行简单的字符串替换。我有: sed -i 's/old/new/' /Users/A/file 上面写着无效的命令代码A 我需要做什么?OSX/BSDsed中的-I选项与GNU/Linux版本稍有不同,因为它需要提供一个备份扩展名,即使它是一个空字符串(这意味着不会进行备份)。出现“无效命令代码”错误消息是因为s/old/new作为备份扩展名,而/Users/A/file作为脚本(其中A被视为无效命令名)。所以它必须是这样的: sed -i

我在Mac上使用Sed。我正在尝试对不在目录中的文件执行简单的字符串替换。我有:

sed -i 's/old/new/' /Users/A/file
上面写着无效的命令代码A


我需要做什么?

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

sed -i '' 's/old/new/' /Users/A/file
如果您有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

如果尝试cat/Users/A/file | sed-i's/old/new/,是否有错误?这是完整路径吗?